如何交换列表中的多个元素(Python)

时间:2018-03-10 03:54:10

标签: python list swap

我们如何交换列表中的多元素?

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

如果我想将1,2,3,4交换到底部,将11,12交换到顶部,如:

a = [11, 12, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4]

我使用了元组方法:

(a[:4], a[10:]) = (a[10:], a[:4])

但输出不同,即:

a = [11, 12, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4]

为什么这是错的,我该怎么纠正呢?

2 个答案:

答案 0 :(得分:3)

您需要先在末尾交换零件,或者在换档之前更换所有零件。

>>> a[10:], a[:4]  = a[:4], a[10:]
>>> a
[11, 12, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4]
>>>

答案 1 :(得分:0)

您的代码执行此操作: 首先计算(a [10:],a [:4]),得到([11,12],[1,2,3,4])。然后它尝试用[11 12]替换[:4]。结果将是[11,12,5,6,7,8,9,10,11,12]。现在当第二部分(a [10:])想要执行时,a的长度现在是10,而[10:]意味着在末尾添加一些东西,而不是覆盖[11,12]。

您应该跟踪要交换的两个部分的长度,并相应地索引列表。