重新排序Python列表

nat*_*ill 3 python

我有4个项目的列表,如下所示:

a, b, c, d = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我正在重新排序列表,翻转每一对:

[b, a, d, c]
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个表达式中执行此操作?我已经尝试过使用列表理解和解包,但似乎无法正确使用它.

我有[1,2,3,4].我想要[2,1,4,3].

jte*_*ace 8

更一般地说,如果您想要在列表中翻转数字对:

>>> L = [1, 2, 3, 4, 5, 6]
>>> from itertools import chain
>>> list(chain.from_iterable(zip(L[1::2], L[::2])))
[2, 1, 4, 3, 6, 5]
Run Code Online (Sandbox Code Playgroud)


iCo*_*dez 5

看这个:

>>> lst = [1, 2, 3, 4]
>>> [y for x in zip(*[iter(lst)]*2) for y in x[::-1]]
[2, 1, 4, 3]
>>>
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [y for x in zip(*[iter(lst)]*2) for y in x[::-1]]
[2, 1, 4, 3, 6, 5, 8, 7, 10, 9]
>>>
Run Code Online (Sandbox Code Playgroud)