enumerate() 不返回引用?

问题描述 投票:0回答:1

我有这个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

python arrays list reference
1个回答
0
投票

这与您尝试这样做是一样的:

arr = [1,2,3]
for a in arr:
    a = 0
print(arr)

它也不会改变arr中的值。这是相关问题和一些答案:如何在 for 循环期间修改列表条目?

© www.soinside.com 2019 - 2024. All rights reserved.