a=range(10);
for item in a:
if item < 5:
a.remove(item)
print a
Почему так происходит? Потому что при удалении элемента из списка, индекс не уменьшается. А значит, следующий элемент списка будет пропущен. Отчаявшись, люди идут на такие ухищрения:
i = 0
while i < len(a):
if i < 5:
del a[i]
else:
i += 1
Нам на помощь приходит такая замечательная функция как filter(func, a). Она создает новый список из элементов списка, для которым функция func(item) вернет истину.
filter(lambda x: x <= 5, a)
[i for i in a if i >= 5]
print a
No comments:
Post a Comment