Доброго дня.
Очень интересная задача.
К примеру со списка надо удалить числа кратніе 3, 7, 8.
На Яве рализовывал с помощью итераторов…
Спасибо.
>>> def is378(num):
... if num%3 == 0 or num%7 == 0 or num%8 == 0:
... return False
... return True
...
>>> l = [3,4,5,6,7,2,4,56,8,8,8,9,3,2,1,7]
>>> filter(is378,l)
[4, 5, 2, 4, 2, 1]
>>> test_list = [1,2,3,70,80,22,23,21]
>>> reduced_list = [i for i in test_list if i%3 and i%7 and i%8]
>>> reduced_list
[1, 2, 22, 23]
likin
А если список объектов, который занимает достаточно много места в памяти.
>>> from itertools import ifilter
>>> def is378(num):
... if num%3 == 0 or num%7 == 0 or num%8 == 0:
... return False
... return True
...
>>> l = [3,4,5,6,7,2,4,56,8,8,8,9,3,2,1,7]
>>> ifilter(is378,l)
<itertools.ifilter object at 0x02162D50>
>>> for i in ifilter(is378,l):
... print i
...
4
5
2
4
2
1
>>> def generator():
... for i in l:
... if not (i%3==0 or i%7==0 or i%8==0):
... yield i
...
>>> mygen = generator()
>>> for i in mygen: print i
...
4
5
2
4
2
1
>>> l = [3,4,5,6,7,2,4,56,8,8,8,9,3,2,1,7]
>>> mygen = (i for i in l if i%3 and i%7 and i%8)
>>> mygen
<generator object <genexpr> at 0x02168E90>
>>> for i in mygen:
... print i
...
4
5
2
4
2
1
i = 0
while i < len( l ):
if l[i]%3==0 or l[i]%7==0 or l[i]%8==0:
del l[i]
else:
i += 1