【问题标题】:Swap parts of a list in python在python中交换列表的一部分
【发布时间】:2023-03-13 16:25:01
【问题描述】:

假设我有,

a = [1,2,3,4,5]

我想将列表拼接 a[:2] 与 a[-2:] 交换。这样a就变成了[4,5,3,1,2]

有没有pythonic方法可以做到这一点?

EDIT1:在第一个答案之后,我尝试了这个,

>>> a = [1,2,3,4,5]
>>> a[:2],a[-2:]=a[-2:][:2]

Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
TypeError: can only assign an iterable

有一个例外,我知道了。

【问题讨论】:

    标签: python list inline swap


    【解决方案1】:

    在元组解包中使用切片赋值:

    >>> a = [1,2,3,4,5]
    >>> a[:2], a[-2:] = a[-2:], a[:2]
    >>> a
    [4, 5, 3, 1, 2]
    

    【讨论】:

    • 另外,虽然我同意 @falsetru 的观点,即这是分配切片的 Python 方式,但 Python 鼓励您尽可能地易于阅读。除非事情在内存方面变得丑陋或对性能至关重要,否则实际上可能会选择一个临时变量可能会更清晰,具体取决于您的交换问题变得多么复杂。在这种情况下,我认为这个解决方案是最容易阅读的。
    • @MarcusMuller 那你有什么建议?
    • @MarcusMüller,对我来说,引入临时变量会使其不可读。
    • 我的第一个直觉是这样的,但不知何故,我的 python 解释器给出了一个错误,TypeError: can only assign an iterable。有什么想法吗?
    • @MarcusMuller 展示一个例子。你怎么能在这里使用临时变量???它使它看起来更不可读。请问我们如何
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多