Python For循环没有遍历列表中的所有值?

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

试图解决这个代码,我得到一个奇怪的输出。有人能解释为什么最外层的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 == 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)]