所以我想删除列表中的所有2的倍数。我该怎么做?但还有另外一个问题,如果我想删除所有6的倍数,例如?
答案 0 :(得分:2)
要删除列表中的所有2或3的倍数,您可能希望进行列表推导,其中您将输入一个条件,该条件可以过滤掉可以按您要查找的任何倍数均匀划分的整数。如果您发布了代码示例,我可能会给您更好的帮助,但根据您的问题,我建议以下内容......
nums = [0,1,2,3,4,5,6,7,8]
no_mult_of_2 = [ x for x in nums if x%2 != 0 ]
no_mult_of_3 = [ x for x in nums if x%3 != 0 ]
print no_mult_of_2
print no_mult_of_3
...打印
[1, 3, 5, 7]
[1, 2, 4, 5, 7, 8]
正如你所看到的,6在两种情况下都消失了,因为它是2和3的倍数。注意0缺失了。不确定你是否希望这种情况发生,所以请记住这一点。
另外......你的问题可能会收到如此多的投票,因为这里的文化鼓励用户尝试思考问题,而不仅仅是要求解决方案。起初我自己并不理解这一点,有时我的问题被低估了。不要气馁,我们在这里提供帮助,试着向我们展示你将来提出问题时所取得的进展(例子)。
答案 1 :(得分:2)
a = range(10)
a = filter(lambda n: n%2 != 0, a)
它会给你
[1,3,5,7,9]
正如你所看到的,不再有六个(六个任意倍数都会发生同样的情况)
然后,如果删除三的倍数
a = filter(lambda n: n%3 != 0, a)
a将是[1,2,4,5,7,8]
答案 2 :(得分:1)
你可以这样做(如果是索引):
>>> l=range(100)
>>> l[:]=[e for i,e in enumerate(l) if i%2]
或者如果它是列表元素值的倍数:
>>> l=range(100)
>>> l[:]=[e for e in l if e%2]
使用e
(或i
)% 3
作为3的倍数。由于6是2或3的倍数,因此在任何一种情况下都会删除它。