python:使用元组重新排列列表的内容

时间:2012-03-19 21:40:54

标签: python list tuples

我是一名蟒蛇初学者。最近我看到了这段代码:

>>> 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

我的问题是:为什么第二行中的代码会将列表更改为结果?

提前致谢

2 个答案:

答案 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)