从列表中删除可被5整除的数字的Python程序返回错误的值
我想从列表中删除可被5整除的数字,但当可被5整除的值彼此相邻时,它不会删除第二个。有人能告诉我我做错了什么吗?代码如下:从列表中删除可被5整除的数字的Python程序返回错误的值,python,list,Python,List,我想从列表中删除可被5整除的数字,但当可被5整除的值彼此相邻时,它不会删除第二个。有人能告诉我我做错了什么吗?代码如下: my_list = [] n = int(input("Size of list: ")) for i in range(n): my_list.append(int(input("Enter value: "))) for i in my_list: if i % 5 != 0: continue
my_list = []
n = int(input("Size of list: "))
for i in range(n):
my_list.append(int(input("Enter value: ")))
for i in my_list:
if i % 5 != 0:
continue
else:
my_list.remove(i)
print(my_list)
我将建立一个具有良好价值观的新列表:
new_list=[如果项目%5!=0,则我的_列表中的项目对应项目]
您正在将其添加到同一列表中。
比如:
如果数组是4,5,10,6
然后首先a[1]
是5
从列表中删除后
for循环转到
a[2]
,它现在是6
,因为新数组是4,10,6
,只需循环查看列表的副本,这样删除项就不会影响该过程。修改后的行带有注释:
my_list = []
n = int(input("Size of list: "))
for i in range(n):
my_list.append(int(input("Enter value: ")))
my_list2=my_list.copy() #create a copy of my_list
for i in my_list2: #loop through my_list2
if i % 5 != 0:
continue
else:
my_list.remove(i)
print(my_list)
删除i=5处的图元时,其余图元将向左移动一个位置。因此,位置6处的下一个元素移动到当前位置5,在i增加1后,跳过一个数字 使用filter函数创建一个新列表,其中只包含满足条件的数字
my_list = []
n = int(input("Size of list: "))
for i in range(n):
my_list.append(int(input("Enter value: ")))
filtered_list = list(filter(lambda x: x % 5 == 0, my_list))
print(filtered_list)
在迭代列表时修改列表是有问题的。最简单的解决办法是列一个新的清单。