首页 > 解决方案 > 为什么循环中的赋值语句在python中只执行一次

问题描述

我认为这与我的 C 语言习惯不同。我想每次都执行赋值语句,那该怎么做呢?

输入

a = [0,1,2,3,4,5]
for i in range(6):
    b = a
    print(len(b))
    c = b.pop(i)

输出

6
5
4
3
Exception has occurred: IndexError
pop index out of range

好像b = a只执行一次。

我想得到的答案是:

6
6
6
6
6
6

我不想改变b长度。

标签: pythonlistfor-loop

解决方案


首先,您没有使用numpy,因此无需导入它。

其次,您认为的“赋值”在 Python 中并不存在。相反,您将名称 绑定到也绑定到b的值。a实际上,您的代码与此之间没有区别:

a = [0,1,2,3,4,5]
for i in range(6):
    print(len(a))
    c = a.pop(i)

如果你想要一个副本,你需要明确地创建一个:

a = [0,1,2,3,4,5]
for i in range(6):
    b = a[:]  # or b = a.copy()
    print(len(b))
    c = b.pop(i)

输出:

6
6
6
6
6
6

推荐阅读