Python 将两行列表理解合并为一行
我有一个元组列表,如下所示:Python 将两行列表理解合并为一行,python,list,tuples,Python,List,Tuples,我有一个元组列表,如下所示: loft = [(1, 2), (3, 4), (5, 6)] odd = [1, 3, 5] even = [2, 4, 6] odd = [x[0] for x in loft] even = [x[1] for x in loft] 我希望结果是这样的: loft = [(1, 2), (3, 4), (5, 6)] odd = [1, 3, 5] even = [2, 4, 6] odd = [x[0] for x in loft] even =
loft = [(1, 2), (3, 4), (5, 6)]
odd = [1, 3, 5]
even = [2, 4, 6]
odd = [x[0] for x in loft]
even = [x[1] for x in loft]
我希望结果是这样的:
loft = [(1, 2), (3, 4), (5, 6)]
odd = [1, 3, 5]
even = [2, 4, 6]
odd = [x[0] for x in loft]
even = [x[1] for x in loft]
我可以这样做:
loft = [(1, 2), (3, 4), (5, 6)]
odd = [1, 3, 5]
even = [2, 4, 6]
odd = [x[0] for x in loft]
even = [x[1] for x in loft]
但我需要在一行中完成。我试过这个:
odd, even = [x[0], x[1] for x in loft]
但给了我一个错误:
File "<stdin>", line 1
odd, even = [x[0], x[1] for x in loft]
^
SyntaxError: invalid syntax
文件“”,第1行
奇数,偶数=[x[0],x[1]表示放样中的x]
^
SyntaxError:无效语法
可以在一行中完成吗?您可以使用
zip
解包:
loft = [(1, 2), (3, 4), (5, 6)]
odd, even = zip(*loft)
输出:
(1, 3, 5)
(2, 4, 6)
[1, 3, 5]
[2, 4, 6]
如果希望结果是list
s,而不是tuple
s,可以使用map
:
loft = [(1, 2), (3, 4), (5, 6)]
odd, even = map(list, zip(*loft))
输出:
(1, 3, 5)
(2, 4, 6)
[1, 3, 5]
[2, 4, 6]