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

如何用指定公式处理二维列表元素并返回二维列表(列表推导式实现)

二维列表的高斯核值计算(列表推导式实现)

问题背景

给定如下二维坐标列表:

lst = [[(-1, -1), (-1, 0), (-1, 1)],
       [(0, -1), (0, 0), (0, 1)],
       [(1, -1), (1, 0), (1, 1)]]

需要为每个坐标元组(x,y)计算对应数值,规则如下:

  • 通用公式:(1 / (math.pi * 40.5)) * math.e ** -((x ** 2 + y ** 2) / 40.5)
  • 特殊情况:坐标(0,0)固定返回1.5

目标是直接生成二维列表形式的结果,目前通过嵌套循环得到了一维列表,但使用列表推导式时多次出现语法错误,需要正确的实现方式。

解决方案

使用嵌套列表推导式可以直接匹配原列表的二维结构,同时处理特殊坐标的判断。实现代码如下:

import math

# 原始二维坐标列表
lst = [[(-1, -1), (-1, 0), (-1, 1)],
       [(0, -1), (0, 0), (0, 1)],
       [(1, -1), (1, 0), (1, 1)]]

# 嵌套列表推导式生成结果二维列表
result = [
    [
        1.5 if (x, y) == (0, 0) 
        else (1 / (math.pi * 40.5)) * math.e ** -((x**2 + y**2) / 40.5)
        for (x, y) in sublist
    ]
    for sublist in lst
]

# 打印结果
print(result)

运行结果

执行后会输出符合要求的二维列表:

[
 [-0.007480807217716918, -0.007667817778372781, -0.007480807217716918],
 [-0.007667817778372781, 1.5, -0.007667817778372781],
 [-0.007480807217716918, -0.007667817778372781, -0.007480807217716918]
]

说明

嵌套列表推导式的结构完全对应原二维列表:

  1. 外层推导式遍历原列表的每个子列表
  2. 内层推导式遍历子列表中的每个坐标元组,通过条件判断优先处理(0,0)的特殊值,其余坐标按公式计算
  3. 这种写法无需额外转换一维列表,直接生成目标二维结构,代码简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:15:36