我有一个foo()返回元组的函数。假设('a', 1) 我有一个迭代器a,我想迭代并将每个项目传递给该函数。最后,我需要两个列表- r1,r2其中r1包含从函数返回的元组中的所有第一项。第二个列表r2-这些元组中所有第二个项目的结果。r1 = ['a', 'b', 'c']r2 = [1, 2, 3]我不太喜欢这种方法:result = [foo(i) for i in a]r1 = [i[0] for i in result]r2 = [i[1] for i in result]
2 回答
九州编程
TA贡献1785条经验 获得超4个赞
您可以使用此zip功能。
>>> result = [('a', 1), ('b', 2), ('c', 3)]
>>> r1, r2 = zip(*result)
>>> r1
('a', 'b', 'c')
>>> r2
(1, 2, 3)
zip(*result) 解压缩每个列表,result并将它们作为单独的参数传递给zip函数。它实质上是对列表进行转置。它产生两个元组的列表,然后将其分配给r1和r2。
添加回答
举报
0/150
提交
取消