【发布时间】:2017-12-31 22:23:09
【问题描述】:
注意;这是一个自我问答。请看下面我的回答。
给定一个元组列表:
l = [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
我想找到最快和最简单的方法来反转x 中的每个元组,以便我得到:
[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
【问题讨论】:
注意;这是一个自我问答。请看下面我的回答。
给定一个元组列表:
l = [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
我想找到最快和最简单的方法来反转x 中的每个元组,以便我得到:
[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
【问题讨论】:
l2 = [t[::-1] for t in l]
使用标准的负步切片 t[::-1] 来获取元组的反转,并使用列表推导来获取每个元组的反转。
【讨论】:
tuple 才能获得您期望的结果,但这并不重要。
这其实很简单,有几种方法,最简单的是列表推导。要反转 2 元组,只需将它们解包并交换:
[(y, x) for x, y in l]
# [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
要反转 n 元组,您可以使用元组切片 ([::-1]) 进行反向切片:
[x[::-1] for x in l]
# [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
【讨论】:
最简单的方法...
l=[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
l=[tuple(reversed(t)) for t in l]
【讨论】: