Python中列表项的通用反转

时间:2011-01-13 21:38:17

标签: python sequences

>>> b=[('spam',0), ('eggs',1)]
>>> [reversed(x) for x in b]
[<reversed object at 0x7fbf07de7090>, <reversed object at 0x7fbf07de70d0>]

无赖。我希望得到一个反转元组列表!

当然可以做到:

>>> [tuple(reversed(x)) for x in b]
[(0, 'spam'), (1, 'eggs')]

但我希望通用的东西?当被移交给元组列表时,返回一个反转元组列表,当移交列表列表时,返回一个反转列表列表。

当然,isinstance()的丑陋黑客总是可以使用,但我希望避免走那条路。

2 个答案:

答案 0 :(得分:8)

Extended slicing

[x[::-1] for x in b]

答案 1 :(得分:0)

如果您只需要一个深度,请尝试[x [:: - 1]为m in mylist]。否则只需要创建一个像

这样的递归函数
import collections
def recursive_reversed(seq):
    if isinstance(seq, collections.Sequence):
        return [recursive_reversed(x) for x in reversed(seq)]
    return seq

该函数实际上将所有序列转换为列表,但我希望你得到要点。