python - 使用推导式创建对列表
问题描述
我正在尝试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
以及给出配对的理解。
解决方案
转换list comprehension
为您在上面发布的代码中提到的工作,您可以尝试:
[[i,j] for i, j in zip(r1, r2)]
或添加range
:list comprehension
[[i,j] for i, j in zip(range(0, 10, 2), range(10, 0, -2))]
推荐阅读
- python - BigQuery 中的 Heisenberg 错误“invalid_grant”?
- javascript - 如何使用 Chrome 的 chrome.downloads API 将 html5 画布下载为图像
- javascript - 这个动画之后如何显示内容?
- reactjs - How to embed ReactJS app into SharePoint add-in
- sql-server - SQL Server:数据不存在时返回空白值
- ios - WebRTC getUserMedia() - Does not work on iphone ios chrome
- c# - Jquery在文档准备好时选择全部作为默认值
- listview - xamarin forms command issue
- mysql - 加入sql表和计数
- oracle - Oracle 11g Maximum Processes/Sessions/Transactions limits