如何交换列表中的多个元素 (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]
>>>
我们如何交换列表中的多个元素?
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]
>>>