Python For循环没有遍历列表中的所有值?
试图解决这个代码,我得到一个奇怪的输出。有人能解释为什么最外层的for循环在i=2时不运行吗?谢谢 对于上下文,编写代码是为了尝试从a中删除b中的所有值,包括所有重复(即a=[1,2,2],b=[2]应该输出[1])。我知道有更有效的方法可以做到这一点,我只是不明白为什么这样做不起作用 代码:Python For循环没有遍历列表中的所有值?,python,for-loop,Python,For Loop,试图解决这个代码,我得到一个奇怪的输出。有人能解释为什么最外层的for循环在i=2时不运行吗?谢谢 对于上下文,编写代码是为了尝试从a中删除b中的所有值,包括所有重复(即a=[1,2,2],b=[2]应该输出[1])。我知道有更有效的方法可以做到这一点,我只是不明白为什么这样做不起作用 代码: def arrayfunc(a,b): list = a for i in a: print(i) for j in b: if i
def arrayfunc(a,b):
list = a
for i in a:
print(i)
for j in b:
if i == j:
list.remove(j)
print(a)
arrayfunc([1,2,3],[1])
输出
1
3
[2, 3]
您需要将列表
a
复制到list
(尽管您应该使用除list
以外的名称,因为它是内置的)作为list=a.copy()
或list=a[:]
。目前您只是将列表
指向a
,因此当您修改列表
时,您也会修改a
查看以下答案:您能正确设置代码格式吗?您正在从列表中删除,同时对其进行迭代。不要调用列表
list
,因为这样做会覆盖具有内置含义返回的名称[i for i in a if i not in set(b)]