Найти - Пользователи
Полная версия: ф-ция filter
Начало » Python для новичков » ф-ция filter
1
Fibio
Изучаю 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
почему во в тором варианте, когда я подставляю s а не range, filter не срабатывает?
и правда ли что в python 3+ ф-ций filter и reduce не будет?
PooH
Потому что в s у вас не список целых чисел, а список из одного элемента - списка целых чисел:

[]

чтобы был список чисел надо:

s = range(-5, 5)
Fibio
ой, спасибо, не заметила
py.user.next
new = filter(lambda x: x > 0, s[0])
если именно такую s надо

>>> 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]
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB