Python中如何将列表推导式转换为for循环?含嵌套条件示例
没问题!我来帮你把这个嵌套的列表推导式拆解成你熟悉的for循环,顺便理清楚它们之间的对应关系——其实列表推导式本质就是嵌套for循环+条件判断的语法糖,只是写法更紧凑而已。
先把你给出的原列表推导式放出来,方便对比:
arr = [[X, Y, Z] for X in range(x+1) for Y in range(y+1) for Z in range(z+1) if X + Y + Z != N]
对应的for循环写法是这样的,完全等价:
# 先初始化一个空列表,用来存放最终结果 arr = [] # 对应推导式里的第一个for循环,是最外层循环 for X in range(x+1): # 对应推导式里的第二个for循环,嵌套在X的循环内部 for Y in range(y+1): # 对应推导式里的第三个for循环,是最内层循环 for Z in range(z+1): # 对应推导式里的if过滤条件 if X + Y + Z != N: # 把符合条件的[X,Y,Z]添加到列表中,这一步对应推导式最前面的[[X,Y,Z]] arr.append([X, Y, Z])
简单总结一下对应规则:
- 列表推导式最前面的
[X,Y,Z],就是每次满足条件时要添加到列表里的元素,对应循环里的arr.append([X,Y,Z]) - 推导式里的for循环是从左到右嵌套的,第一个
for X...是最外层循环,后面的依次是内层循环 - 最后的
if条件,就是嵌套循环最内层里的判断逻辑,只有满足条件才会把元素加入列表
这样对比着看,是不是就能把列表推导式和你熟悉的for循环对应起来了?
内容的提问来源于stack exchange,提问作者Subhadeep Banerjee
相关产品推荐
相关产品推荐

