gpt4 book ai didi

python - 在 for 循环中使用 unpack 而不是在 python 中使用 unpack 有什么区别

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:20 27 4
gpt4 key购买 nike

谁能给我解释一下为什么在 test1 上,nums 是 [[0,0],[-1,-1],[0,0],[0,0]] 而不是在测试2上?据我了解,python for xx in xxx 与任何其他语言中的 for 循环非常相似,并且逐个元素获取。那么在 for 循环中使用 unpack 和不使用 unpack 有什么区别呢?谢谢

test([[0,0],[0,0],[0,0],[0,0]])
test2([[0,0],[0,0],[0,0],[0,0]])
def test1(self, nums):
ctn = 0
for e in nums:
ctn += 1
u, v = e
if ctn == 2:
e[0] = e[1] = -1
print(nums) #[[0,0],[-1,-1],[0,0],[0,0]]

def test2(self, nums):
ctn = 0
for u, v in nums:
ctn += 1
if ctn == 2:
u = v = -1
print(nums) #[[0,0],[0,0],[0,0],[0,0]]

最佳答案

变量uv 是对子列表中元素的引用,而不是对子列表本身的任何引用。当您更改任一值时,它不会导致任何副作用。

但是,e 是对子列表本身的引用。当您索引到 e 并更改其值时,您是在子列表本身中执行赋值,从而导致副作用(更改原始列表中的值)。

关于python - 在 for 循环中使用 unpack 而不是在 python 中使用 unpack 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55036076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com