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

Python:提取嵌套列表中元组对应位置的坐标极值

高效提取嵌套列表对应位置坐标的最小x与最大y

直接用zip(*L0)结合列表推导式就能简洁高效地解决问题,避免冗长的嵌套循环:

示例代码

# 测试用的嵌套列表
L0 = [
    [(1, 5), (3, 2), (6, 1)],
    [(2, 4), (1, 3), (5, 2)],
    [(0, 6), (2, 1), (7, 0)]
]

# 核心实现
result = [
    (min(tup[0] for tup in group), max(tup[1] for tup in group))
    for group in zip(*L0)
]

print(result)  # 输出: [(0, 6), (1, 3), (5, 2)]

关键逻辑说明

  1. zip(*L0)的作用:这一步是核心,它会将所有子列表(L1)中对应位置的元组打包成一个个分组。比如上面的例子,zip(*L0)会生成三个分组:
    • 第一个分组:((1, 5), (2, 4), (0, 6))(所有L1的第1个元组)
    • 第二个分组:((3, 2), (1, 3), (2, 1))(所有L1的第2个元组)
    • 第三个分组:((6, 1), (5, 2), (7, 0))(所有L1的第3个元组)
  2. 计算每个分组的min(x)和max(y):对每个分组,用生成器表达式遍历所有元组,分别提取x坐标(tup[0])求最小值,提取y坐标(tup[1])求最大值,组合成新的元组。
  3. 性能优势:Python内置的min、max函数底层由C实现,比手动嵌套循环的执行效率更高,同时代码更简洁易读。

可选优化写法

如果偏好map的风格,也可以这样写,效果完全一致:

result = [
    (min(map(lambda t: t[0], group)), max(map(lambda t: t[1], group)))
    for group in zip(*L0)
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:01:14