Форум сайта python.su
2
Изучаю python, все очень понятно и просто, но иногда, поведение некоторых ф-ций заводит в тупик. Например про округленич целые трактаты… но я собстевнно не об этом. Поясните люди добрые почему так:
def func():
s = [range(-5, 5)]
print s
new = filter((lambda x: x>0), range(-5, 5))
print new
new = filter((lambda x: x>0), s)
print new
[[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]] #s
[1, 2, 3, 4]#new1
[[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]]#new2
Офлайн
72
Потому что в s у вас не список целых чисел, а список из одного элемента - списка целых чисел:
[]
чтобы был список чисел надо:
s = range(-5, 5)
Офлайн
2
ой, спасибо, не заметила
Офлайн
857
new = filter(lambda x: x > 0, s[0])
>>> s = [range(-5, 6)]
>>> s
[[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]]
>>> new = filter(lambda x: x > 0, s[0])
>>> new
[1, 2, 3, 4, 5]
>>>
Отредактировано (Сен. 22, 2011 03:18:37)
Офлайн