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

按列表中元组的顺序将多个元组列表组合成新的元组列表(python3)

按列表中元组的顺序将多个元组列表组合成新的元组列表(python3)

qq_花开花谢_0 2021-07-01 18:03:51
我有多个包含两个值的元组列表,例如:[('0','2'), ('0','2'), ('1','0')][('2','2'), ('0','0'), ('0','2')][('0','0'), ('2','1'), ('2','1')][('0','2'), ('2','0'), ('0','2')]我想创建一组新的列表,其中包含按照它们在列表中出现的顺序的元组。例如在上面的例子中,我想要的输出是:[('0','2'), ('2','2'), ('0','0'), ('0','2')][('0','2'), ('0','0'), ('2','1'), ('2','0')][('1','0'), ('0','2'), ('2','1'), ('0','2')] 我在思考如何解决这个问题时遇到了麻烦,因为元组没有唯一的键值,而实际的列表每个包含大约 500 个元组。列表中的位置是我新分组的重要品质。如果有帮助,每个列表都位于文件的新行上。有人有建议吗?
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

尝试使用 simple zipwith *:


a = [

       [('0','2'), ('0','2'), ('1','0')],

       [('2','2'), ('0','0'), ('0','2')],

       [('0','0'), ('2','1'), ('2','1')],

       [('0','2'), ('2','0'), ('0','2')]

    ]



list(zip(*a))

输出将是:


[(('0', '2'), ('2', '2'), ('0', '0'), ('0', '2')),

 (('0', '2'), ('0', '0'), ('2', '1'), ('2', '0')),

 (('1', '0'), ('0', '2'), ('2', '1'), ('0', '2'))]


查看完整回答
反对 回复 2021-07-13
?
RISEBY

TA贡献1856条经验 获得超5个赞

也许做这样的事情:


a = [[('0','2'), ('0','2'), ('1','0')],

    [('2','2'), ('0','0'), ('0','2')],

    [('0','0'), ('2','1'), ('2','1')],

    [('0','2'), ('2','0'), ('0','2')]]


res = list(map(list, (zip(*a))))

print(res)


查看完整回答
反对 回复 2021-07-13
?
手掌心

TA贡献1942条经验 获得超3个赞

如果您的输出不是元组列表,您也可以使用 numpy 执行此操作:


import numpy as np

arr = np.transpose([[('0','2'), ('0','2'), ('1','0')],

                [('2','2'), ('0','0'), ('0','2')],

                [('0','0'), ('2','1'), ('2','1')],

                [('0','2'), ('2','0'), ('0','2')]], axes=[1,0,2])

它将返回一个 3D ndarray。


查看完整回答
反对 回复 2021-07-13
  • 3 回答
  • 0 关注
  • 342 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号