4
>>> 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')]

但我希望有一些通用的东西?smth,当传递一个元组列表时,返回一个反向元组列表,当传递一个列表列表时,返回一个反向列表列表。

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

4

2 回答 2

8

扩展切片

[x[::-1] for x in b]
于 2011-01-13T21:39:57.490 回答
0

如果您只需要 1 的深度,请尝试 [x[::-1] for x in mylist]。否则只需制作一个递归函数,如

import collections
def recursive_reversed(seq):
    if isinstance(seq, collections.Sequence):
        return [recursive_reversed(x) for x in reversed(seq)]
    return seq

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

于 2011-01-13T21:46:39.030 回答