-7

所以我想删除列表中所有 2 的倍数。我该怎么做?但是还有另一个问题,如果我想删除所有 3 的倍数,例如,6 会发生什么?

4

3 回答 3

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。不确定您是否希望发生这种情况,因此请记住这一点。

另外...您的问题可能会收到很多反对票,因为这里的文化鼓励用户尝试思考问题,而不仅仅是寻求解决方案。起初我自己并不理解这一点,有几次我的问题被否决了。不过不要气馁,我们在这里为您提供帮助,只是尝试向我们展示您在未来提出问题时取得了什么样的进展(示例)。

于 2013-01-29T15:06:04.320 回答
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]

于 2013-01-29T15:08:05.303 回答
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 的倍数,因此无论哪种情况都将删除它。

于 2013-01-29T15:04:04.690 回答