gpt4 book ai didi

python - 压缩两个列表列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:45 26 4
gpt4 key购买 nike

需要帮助,因为我在压缩两个列表列表(矩阵)时迷路了。

格式完全相同的矩阵,我希望它们在相同位置的每个元素的元组对中压缩。

例如,

m1 = [['A', 'B', 'C'],
['D', 'E'],
['F', 'G']]

m2 = [['s1', 's2', 's3'],
['s4', 's5'],
['s1', 's3']]

我希望得到的是,格式相同:

z = [[('A', 's1'), ('B', 's2'), ('C', 's3')],
[('D', 's4'), ('E', 's5')],
[('F', 's1'), ('G', 's3')]]

我可以编写一个函数来执行此操作,但我正在寻找一种在 Python 中执行此操作的优雅方法。

最佳答案

zip()zip() 再次:

[zip(*paired) for paired in zip(m1, m2)]

zip() function将输入序列的每个元素配对; m1[0]m2[0]m1[1]m2[1],等等。 ,然后对于这些对中的每一对,您再次将元素配对(m1[0][0]m2[0][0]m1[ 0][1]m2[0][1] 等)。

如果这是 Python 3,则必须将其中一个包装在 list() 调用中:

[list(zip(*paired)) for paired in zip(m1, m2)]

演示:

>>> m1 = [['A', 'B', 'C'],
... ['D', 'E'],
... ['F', 'G']]
>>> m2 = [['s1', 's2', 's3'],
... ['s4', 's5'],
... ['s1', 's3']]
>>> [zip(*paired) for paired in zip(m1, m2)]
[[('A', 's1'), ('B', 's2'), ('C', 's3')], [('D', 's4'), ('E', 's5')], [('F', 's1'), ('G', 's3')]]

关于python - 压缩两个列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com