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

Python列表推导式生成含5的多米诺骨牌列表出错,如何修正?

问题:Python列表推导式生成多米诺骨牌列表出错

我正在练习使用Python列表推导式,目标是生成包含数字5的多米诺骨牌列表,期望结果为:

[[5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6]]

课程里只展示过用range生成递增嵌套列表的示例,比如[[1,2,3], [1,2,3]]。我尝试了以下代码:

x = [val for val in range(0,7)]

Fives = [[5,x] for pieces in range(0,7)] 
print(Fives)

但得到的错误结果是:

[[5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]]

请问代码哪里出错了,该如何修正?


问题分析与修正

错误原因

  1. 你定义的x是包含0到6的完整列表,在列表推导式中直接使用x会把整个列表作为子列表的第二个元素,而非单个数字;
  2. 列表推导式中的变量pieces未被使用,循环只是重复生成7次相同的[5, x]子列表。

修正方案

直接在列表推导式中遍历range(0,7)的每个元素,将其作为子列表的第二个值,无需提前定义x:

Fives = [[5, num] for num in range(0,7)]
print(Fives)

运行后即可得到期望结果:

[[5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6]]

如果一定要保留x的定义,也可以遍历x中的每个元素:

x = [val for val in range(0,7)]
Fives = [[5, num] for num in x]
print(Fives)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:40:28