我是一名蟒蛇初学者。最近我看到了这段代码:
>>> words = ['I', 'turned', 'off', 'the', 'spectroroute']
>>> words[2], words[3], words[4] = words[3], words[4], words[2]
>>> words
['I', 'turned', 'the', 'spectroroute', 'off']
我对第二行感到困惑。似乎使用了元组,但我不明白为什么列表的顺序会改变为结果?
看起来第二行是这样做的:
>>> tmp = words[2]
>>> words[2] = words[3]
>>> words[3] = words[4]
>>> words[4] = tmp
我的问题是:为什么第二行中的代码会将列表更改为结果?
提前致谢
答案 0 :(得分:2)
List是一个可变数据结构。 words[2] = 'foobar'
会将列表中的第三个元素更改为'foobar'
。在
>>> words[2], words[3], words[4] = words[3], words[4], words[2]
首先评估右侧,并将结果字符串分配到列表中的各个位置,从而更改它。
答案 1 :(得分:1)
你非常正确。它在右侧(在内存中)创建一个元组,然后将其值解压缩到原始列表中,从而覆盖以前的索引。这就是为什么你不需要tmp变量,因为它发生在内存中。
它类似于这个概念:
a, b, c = (1, 2, 3)