我认为这与我的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
似乎qazxsw poi只执行一次。
我想得到的答案是:
b = a
我不想改变6
6
6
6
6
6
的长度。
首先,你没有使用b
,所以不需要导入它。
其次,你认为“赋值”在Python中并不存在。相反,您将名称numpy
绑定到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
和a
不是不同的对象,它们只是同一个对象的不同名称。当你说b
时,你正在修改b.pop(i)
和a
指向的那个对象,所以做b
在第一次迭代后没有做任何事情; b=a
已经指向与b
相同的对象。你想做什么可以通过做a
来完成。