2011-01-13 6 views
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')] 

을하지만 일반적인 뭔가 희망 : 물론

내가 할 수 있습니까? Thuple의리스트를 넘겨 줄 때, 되돌려 진 튜플의리스트를 반환하고,리스트의리스트가 넘겨지면, 뒤집힌리스트의리스트를 돌려주는 Smth.

확실히, isinstance()를 사용한 추악한 해킹은 항상 사용할 수 있지만 그 경로를 피하기를 희망합니다.

답변

8

Extended slicing.

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

감사합니다. 이것은 가장 유용합니다. 자세한 내용은 – mrkafk

+1

linky 링크를 참조하십시오. http://docs.python.org/release/2.3.5/whatsnew/section-slices.html – keithjgrant

0

깊이가 1면 충분하면 [x [:: - 1] in mylist]를 시도하십시오. 그렇지 않으면 단지

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

그 기능이 실제로 목록에 시퀀스의 모든 변환과 같은 재귀 함수를 만들지 만, 당신은 요점을 얻을, 나는 희망한다.