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

如何生成含连续数字与预定义集合元素的指定嵌套列表?

解决你的嵌套列表生成问题

我明白你想要生成按数字分组、交替出现'A'和'B'的嵌套列表,比如[['A', 1], ['B', 1], ['A', 2], ['B', 2], ...]。咱们来看看你之前尝试的两种写法问题出在哪,再给出正确的方案:

你的两种尝试的问题分析

  1. 第一种写法:[['A', x],['B', x] for x in range(1,100)]
    这个写法在语法上就通不过——列表推导式的每一项只能是单个元素,你这里一次放了两个子列表,Python会把它们当成一个元组处理,要么结构不符合预期,要么直接报错。

  2. 第二种写法:[[key, x] for key in ['A', 'B'] for x in range(1,100)]
    这里的循环顺序搞反了!它会先遍历'A',把所有数字1到99都和'A'配对,再遍历'B'配对所有数字,最终得到的是[['A',1], ['A',2], ..., ['B',1], ['B',2], ...],和你想要的按数字分组的顺序完全不符。

正确的列表推导式写法

你只需要调整循环的顺序,先遍历数字x,再遍历'A'和'B',这样每个x对应的两个子列表就会连续出现:

[[key, x] for x in range(1, 100) for key in ['A', 'B']]

运行这段代码,就能得到你想要的[['A',1], ['B',1], ['A',2], ['B',2], ..., ['A',99], ['B',99]]结构。

另一种等价写法(更直观)

如果你觉得嵌套循环的推导式有点绕,也可以用普通循环+extend的方式实现,逻辑更清晰:

result = []
for x in range(1, 100):
    # 每次循环把当前x对应的两个子列表加入结果
    result.extend([['A', x], ['B', x]])

或者用列表推导式的扁平化写法,效果和上面完全一致:

[item for x in range(1, 100) for item in [['A', x], ['B', x]]]

内容的提问来源于stack exchange,提问作者d.raev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:18:10