a = [1,2,3,4]
for loop in range(0,len(a)):
if a[loop]%2==0:
a.remove(a[loop])
loop = loop - 1
我想通过过滤可以除以2的数字来减少列表。这里有两个问题:
loop
是在R
中没有像预期的那样减少一个,我怎样才能让它发挥作用?感谢您的快速回复,问题的第一部分已经解决,但第二部分呢?如果我想使用for循环来处理它并且如果满足'可分为2的条件'则使loop
减少,该怎么办?
答案 0 :(得分:2)
如果要从列表中删除所有元素,如果它不能被2整除,那么最好的方法是创建一个新的列表,而不能将数字除2,如下所示
[item for item in a if item % 2 != 0]
您也可以使用filter
功能,例如
filter(lambda item: item % 2 != 0, a)
如果您使用的是Python 3.x,则需要使用filter
函数从list
对象生成项目列表,如下所示
list(filter(lambda item: item % 2 != 0, a))
除了这些方法之外,如果你想进行就地替换,那么你可能想要反向进行,比如
a = [1,2,3,4]
for loop in range(len(a) - 1, -1, -1):
if a[loop] % 2 == 0:
a.remove(a[loop])
注意:尽可能选择列表理解方法。
答案 1 :(得分:1)
您可以使用filter
:
filter(lambda x: x % 2 == 0, a)
答案 2 :(得分:0)
列表理解可以解决这个问题:
# Define data in variable a
a = [1,2,3,4]
# Apply the list comprehension to filter list a
a = [i for i in a if i%2==0]