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

How to swap multiple elements in list (Python)

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

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]

为什么这是错误的,我该如何纠正?

您的代码是这样做的: 首先计算 (a[10:], a[:4]) 结果是 ([11, 12], [1, 2, 3, 4])。然后它尝试用 [11 12] 替换 a[:4]。结果将是 [11, 12, 5, 6, 7, 8, 9, 10, 11, 12]。现在第二部分(a[10:])要执行的时候,a的长度现在是10,a[10:]的意思是在末尾加点东西,而不是覆盖[11, 12].

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

你需要先交换最后的部分,否则在它移动之前交换所有内容。

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