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

Python旋转立方体表面排序时Lambda表达式语法错误求助

问题解决:Lambda表达式语法错误修复

你的语法错误出在Lambda表达式的结构上——你把for i in face放在了sum()的外面,导致Python无法正确解析表达式逻辑。

正确的写法应该是把遍历face中点的循环放到sum()的列表推导式内部,这样才能对每个面的所有点计算距离平方和的总和:

sorted_faces = sorted(cube_faces, key=lambda face: sum([
    sum([(cube_points_rotated[i][k] - camera_position[k])**2 for k in range(3)]) 
    for i in face
]))

或者简化内层的列表推导式(用生成器表达式更高效,可省略方括号):

sorted_faces = sorted(cube_faces, key=lambda face: sum(
    sum((cube_points_rotated[i][k] - camera_position[k])**2 for k in range(3)) 
    for i in face
))

错误原因解释

原代码中,lambda face: sum([...]) for i in face的结构非法——Lambda的返回值必须是单个表达式,你直接把生成器表达式放在冒号后面,既不符合语法要求,也违背了“计算单个面总距离平方和”的逻辑。

调整后,内层循环计算单个点到相机的距离平方和,外层循环遍历面内所有点,最后用sum()累加得到整个面的总距离平方和,以此作为排序的key值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:32