在一次迭代中从元组列表中分配两个变量

我有一个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]


繁花不似锦
浏览 225回答 2
2回答

九州编程

您可以使用此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。

桃花长相依

只需使用zip()!result = [foo(i) for i in a]r1, r2 = zip(*result)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python