为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2021-03-22 12:12:32
我有一个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。


查看完整回答
反对 回复 2021-03-23
?
桃花长相依

TA贡献1860条经验 获得超8个赞

只需使用zip()!


result = [foo(i) for i in a]

r1, r2 = zip(*result)


查看完整回答
反对 回复 2021-03-23
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信