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

2024-04-20 05:36:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个返回元组的函数foo()。假设('a', 1) 我有一个iterable a,我想对其进行迭代,并将每个项传递给该函数。 最后我需要两个列表-r1r2,其中r1包含函数返回的元组中的所有第一项。第二个列表r2-这些元组中所有第二个项的结果。在

r1 = ['a', 'b', 'c']
r2 = [1, 2, 3]

我不太喜欢这种方法:

^{pr2}$

Tags: 方法函数列表fooiterable元组r2r1
3条回答

您可以为此使用^{}函数。在

>>> result = [('a', 1), ('b', 2), ('c', 3)]
>>> r1, r2 = zip(*result)
>>> r1
('a', 'b', 'c')
>>> r2
(1, 2, 3)

zip(*result)result中的每个列表解压缩,并将它们作为单独的参数传递到zip函数中。它本质上是transposes列表。它生成两个元组的列表,然后将它们分配给r1和{}。在

zip函数可以很好地满足您的需要。 这里有一个很有帮助的帖子,它与这个功能直接相关

understanding zip function

只需使用zip()!在

result = [foo(i) for i in a]
r1, r2 = zip(*result)

相关问题 更多 >