You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将列表元素映射至子列表所有元素以生成元组列表(坐标)

解决列表元素映射配对问题

需求很明确:把两个长度相同的列表rows和cols做配对,rows里的每个元素要和cols对应位置子列表里的所有元素组成元组,最终生成一个元组列表。

方法一:嵌套循环(直观易懂)

直接用两层循环,外层遍历rows和cols的对应元素对,内层遍历子列表里的每个元素,把元组逐一添加到结果列表中。

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

mapped = []
for row, col_list in zip(rows, cols):
    for col in col_list:
        mapped.append((row, col))

print(mapped)
# 输出: [(502, 555), (502, 905), (1064, 155), (1064, 475), (1500, 195), (1500, 595), (1500, 945)]

方法二:列表推导式(简洁Pythonic)

用列表推导式把嵌套循环浓缩成一行代码,逻辑和上面完全一致,写法更紧凑。

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

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

print(mapped)
# 输出和上面一致

方法三:使用itertools.product(适合扩展场景)

如果后续有更复杂的笛卡尔积需求,可以用itertools.product生成每一组配对,再通过chain把所有结果展开。

from itertools import product, chain

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

# 对每一对row和col子列表生成笛卡尔积,再把所有结果链起来
mapped = list(chain.from_iterable(product([row], col_list) for row, col_list in zip(rows, cols)))

print(mapped)
# 输出同样符合预期

这几种方法都能满足需求,其中列表推导式在日常开发中最常用,兼顾简洁和可读性。

内容的提问来源于stack exchange,提问作者mod13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:07:42