python - “扩展”的列表理解版本
问题描述
以下是否有 1-liner 等效项(使用列表理解):
a = []
for i in range(6):
a.extend(((-i,i,0,2),(-i-1,i,0,6)))
a = tuple(a)
我在想类似的东西
tuple(((-i,i,0,2),(-i-1,i,0,6)) for i in range(6))
但这给出了:
(((0, 0, 0, 2), (-1, 0, 0, 6)),
((-1, 1, 0, 2), (-2, 1, 0, 6)),
((-2, 2, 0, 2), (-3, 2, 0, 6)),
((-3, 3, 0, 2), (-4, 3, 0, 6)),
((-4, 4, 0, 2), (-5, 4, 0, 6)),
((-5, 5, 0, 2), (-6, 5, 0, 6)))
这不是我想要的。
期望的输出
((0, 0, 0, 2),
(-1, 0, 0, 6),
(-1, 1, 0, 2),
(-2, 1, 0, 6),
(-2, 2, 0, 2),
(-3, 2, 0, 6),
(-3, 3, 0, 2),
(-4, 3, 0, 6),
(-4, 4, 0, 2),
(-5, 4, 0, 6),
(-5, 5, 0, 2),
(-6, 5, 0, 6))
解决方案
您可以使用嵌套列表推导。
>>> [t for i in range(6) for t in ((-i,i,0,2), (-i-1,i,0,6))]
>>>
[(0, 0, 0, 2),
(-1, 0, 0, 6),
(-1, 1, 0, 2),
(-2, 1, 0, 6),
(-2, 2, 0, 2),
(-3, 2, 0, 6),
(-3, 3, 0, 2),
(-4, 3, 0, 6),
(-4, 4, 0, 2),
(-5, 4, 0, 6),
(-5, 5, 0, 2),
(-6, 5, 0, 6)]
它读起来像这样
[what I want (t) | for loops as if writing non-listcomp code]
因此等价于
result = []
for i in range(6):
for t in ((-i,i,0,2), (-i-1,i,0,6)):
result.append(t)
推荐阅读
- python - 无法在 django-mapbox-location-field Django 中显示数据
- php - PHP如何:多个提交按钮持有不同的数据但相同的值
- c - 为什么解决三对角系统的并行循环归约在 openMP 中不能很好地扩展?
- python - GEKKO 中的中间结构中的无效元素错误
- javascript - CSV 文件控制台日志记录未定义 - JS
- node.js - 您可以在 express 的 findbyid 路由内调用所有帖子的函数吗
- c# - 如何在 C# 中实现 dapper 使用的类
- r - 如何将函数应用于 R 中 SparkR 中的特定行,同时保持早期结果不变
- python - stats.ttest_ind() 与学生独立 t 检验的“手动”计算:不同的结果
- java - 在 Maven 中构建的 java 类 Tomcat Web 项目中无法访问 assets 文件夹