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

我有多个包含两个值的元组列表,例如:


[('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 个元组。列表中的位置是我新分组的重要品质。如果有帮助,每个列表都位于文件的新行上。


有人有建议吗?


qq_花开花谢_0
浏览 343回答 3
3回答

慕姐8265434

尝试使用 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'))]

RISEBY

也许做这样的事情: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)

手掌心

如果您的输出不是元组列表,您也可以使用 numpy 执行此操作:import numpy as nparr = 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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python