我有这个Python代码:
arr = ['h','e','l','l','o',' ','w','o','r','l','d']
for i,c in enumerate(arr):
c = 0
print(arr)
我想象它会打印一个充满零的数组。
相反,它打印原始数组
['h','e','l','l','o',' ','w','o','r','l','d']
为什么分配给
c
没有像我想象的那样工作?为什么它的行为就像 c
是某种新变量?我从枚举函数中解压出来的,为什么它似乎创建了一个同名的新变量?
除了使用
arr[i] = 0
代替c = 0
还有其他方法吗?
除此之外,运行这个:
for i,c in enumerate(arr):
c = 0
print(0)
打印一系列 0 并运行:
for i,c in enumerate(arr):
c = 0
print(id(c) == id(arr[i))
打印一系列
False
这与您尝试这样做是一样的:
arr = [1,2,3]
for a in arr:
a = 0
print(arr)
它也不会改变arr中的值。这是相关问题和一些答案:如何在 for 循环期间修改列表条目?