如何使用列表推导式(List Comprehensions)实现指定嵌套循环代码?
用列表推导式实现嵌套循环打印坐标的方案
嘿,这事儿很简单,咱们先理清楚原代码的逻辑:你原来的嵌套循环是遍历每一行r和每一列c,然后打印出[r,c]这个坐标列表。用列表推导式的话,分两种情况来实现,我给你详细说:
推荐的规范写法
列表推导式的核心是生成列表,所以最佳实践是先用它生成所有坐标的集合,再遍历打印每个元素,这样代码清晰易读,也符合Python的设计意图:
# 先定义你的row和column值,比如row=3,column=2 row = 3 column = 2 # 用列表推导式生成所有[r,c]的列表 coordinates = [[r, c] for r in range(row) for c in range(column)] # 遍历打印每个坐标 for coord in coordinates: print(coord)
这里的列表推导式[[r, c] for r in range(row) for c in range(column)]完全对应你原来的嵌套循环顺序:先外层循环r,再内层循环c,生成的结果和原循环遍历的顺序完全一致。
不推荐的"一行式"写法(仅作了解)
如果你非要把打印逻辑塞进列表推导式里(虽然这属于滥用列表推导式,因为它本来不是用来执行副作用的),可以这么写:
row = 3 column = 2 # 用_接收无意义的None列表(因为print返回None),只为执行打印操作 _ = [print([r, c]) for r in range(row) for c in range(column)]
为什么不推荐这种?因为这个列表推导式生成的是一个全是None的列表,我们完全不需要这个列表,只是借它的循环机制来打印,可读性差,也不符合Python的代码风格规范,所以除非特殊场景,不建议这么用。
内容的提问来源于stack exchange,提问作者mo2
相关产品推荐
相关产品推荐

