如何用Python列表推导式生成两个等长序列的配对列表?
Pythonic列表推导式实现配对列表生成
当然可以!你想要的简洁写法其实非常直观,直接用列表推导式结合zip()就能搞定,还能把r1和r2的生成逻辑直接嵌进去,省去单独定义变量的步骤,完全符合Pythonic的风格。
最终实现代码
p = [[x, y] for x, y in zip(range(0, 10, 2), range(10, 0, -2))]
代码细节解释
range(0, 10, 2)等价于你原来定义的r1,会生成序列[0, 2, 4, 6, 8]range(10, 0, -2)对应原来的r2,生成序列[10, 8, 6, 4, 2]zip()会自动把两个序列对应位置的元素一一配对,产出(0,10), (2,8), (4,6)...这样的元组对- 列表推导式则把每个元组对转换成
[x,y]格式的子列表,最终生成你需要的配对列表p
运行这段代码后,p的结果是:
[[0, 10], [2, 8], [4, 6], [6, 4], [8, 2]]
对比你之前用循环追加的方式,这种写法既保留了可读性,又充分利用了Python的内置特性,算是最简洁高效的实现方式了。
内容的提问来源于stack exchange,提问作者DrBwts
相关产品推荐
相关产品推荐

