Python中如何编写一行式嵌套循环?遇未解析引用报错求解决
问题解决:Python列表推导式嵌套循环顺序错误
你的问题出在列表推导式的嵌套循环顺序搞反了。Python的列表推导式里,嵌套循环的顺序必须和普通嵌套for循环的顺序一致——先写外层循环,再写内层循环。
你现在的写法先写for ip in subnet,但这时候subnet还没被定义(它是后面for subnet in subnets才会生成的变量),所以会报“Unresolved reference 'subnet'”的错误。
正确写法
把循环顺序调换,先遍历外层的subnets,再遍历每个subnet里的ip,同时把要收集的元素ip放在最前面:
my_list = [ip for subnet in subnets for ip in subnet]
对应普通嵌套循环的逻辑
这个列表推导式等价于下面的普通循环代码,你可以对照着理解顺序:
my_list = [] for subnet in subnets: for ip in subnet: my_list.append(ip)
内容的提问来源于stack exchange,提问作者Algo
相关产品推荐
相关产品推荐

