首页 > 解决方案 > 使用推导式创建对列表

问题描述

我正在尝试p从 2 个范围创建对的列表,

r1 = [i for i in range(0, 10, 2)]
r2 = [j for j in range(10, 0,-2)]

这样,

p[0] = [r1[0], r2[1]]
p[1] = [r1[1], r2[1]]
.....
p[-1] = [r1[-1], r2[-1]]

我天真地以为,

p = [[i, j] for i in range(0, 10, 2) for j in range(10, 0, -2)]

会这样做,但我很快就看到了我的方式的错误。

我也试过,

p = [r1[:], r2[:]]

但是,那也没用。

然后我试了,

p = []
for i, j  in zip(r1, r2):
    p.append([i, j]) 

哪个有效!

但这让我想知道,有没有一种 Pythonic 的方式来使用列表推导来做到这一点?

这两个范围在实现中将始终具有相同的长度,但并不总是跨越相同的域。

编辑:要清楚,我想知道是否有可能在理解范围内生成范围r1&r2以及给出配对的理解。

标签: pythonlist-comprehension

解决方案


转换list comprehension为您在上面发布的代码中提到的工作,您可以尝试:

[[i,j] for i, j  in zip(r1, r2)]

或添加rangelist comprehension

[[i,j] for i, j  in zip(range(0, 10, 2), range(10, 0, -2))]

推荐阅读