将一个列表中的元素映射到子列表中的所有元素,形成元组列表(坐标)

问题描述 投票:0回答:2

我正在尝试将列表中的每个元素 [x] 映射:行到另一个列表中的子列表 [x] 的所有元素:列,结果应该是一个元组列表。这 2 个列表、行和列具有相同的长度,行中的每个元素将对应列表列中的一个子列表(不同长度)。

输出应该是一个元组列表,其中每个元组都有映射/压缩的元素: (row[0], cols[0][0]), (row[0], cols[0][1]), (row[1], cols[1][0]) 等等...

输入: 行 = [502, 1064, 1500] cols = [[555, 905], [155, 475], [195, 595, 945]]

期望的输出: 映射 = [(502, 555), (502, 905), (1064, 155), (1064, 475), (1500, 195), (1500, 959), (1500, 945)]

谢谢!

python list dictionary tuples element
2个回答
1
投票

尝试:

rows = [502, 1064, 1500]
cols = [[555, 905], [155, 475], [195, 595, 945]]

out = []
for r, c in zip(rows, cols):
    for v in c:
        out.append((r, v))

print(out)

印花:

[(502, 555), (502, 905), (1064, 155), (1064, 475), (1500, 195), (1500, 595), (1500, 945)]

0
投票

代码:【列表理解】

rows = [502, 1064, 1500]
cols = [[555, 905], [155, 475], [195, 595, 945]]

mapped = [(row, col) for row, nested_col in zip(rows, cols) for col in nested_col]

print(mapped)

输出:

[(502, 555), (502, 905), (1064, 155), (1064, 475), (1500, 195), (1500, 595), (1500, 945)]
© www.soinside.com 2019 - 2024. All rights reserved.