Python高级嵌套列表推导式[ (a, b) for a in range(3) for b in range(a) ]结果求解
Python嵌套列表推导式执行逻辑详解
要分析的代码如下:
[(a, b) for a in range(3) for b in range(a)]
运行结果为:[(1, 0), (2, 0), (2, 1)]
执行逻辑分步拆解
1. 推导式等价转换
嵌套列表推导式的循环顺序和书写顺序完全一致,写在前面的是外层循环,写在后面的是内层循环,上述代码等价于普通嵌套循环:
res = [] # 外层循环对应推导式第一个for语句 for a in range(3): # 内层循环对应推导式第二个for语句 for b in range(a): res.append((a, b))
2. 逐轮循环计算
外层循环range(3)会生成0、1、2三个值,逐轮执行逻辑如下:
- 当
a=0时:内层循环遍历range(0),这是一个空序列,没有元素可以迭代,不会生成任何元组 - 当
a=1时:内层循环遍历range(1),仅取值b=0,生成元组(1, 0)加入结果列表 - 当
a=2时:内层循环遍历range(2),依次取值b=0、b=1,依次生成元组(2, 0)、(2, 1)加入结果列表
3. 结果汇总
所有循环执行完成后,结果列表按元素生成顺序排列,就是最终输出的[(1, 0), (2, 0), (2, 1)]
内容的提问来源于stack exchange,提问作者X coder
相关产品推荐
相关产品推荐

