python - 使用列表推导时避免创建子列表
问题描述
如果我有这个列表理解:
[list(range(0,x)) for x in [1, 2, 3]]
我明白了
[[0], [0, 1], [0, 1, 2]]
但我想得到:
[0, 0, 1, 0, 1, 2]
请注意,上面的示例只是一个最小示例。
我已经阅读了很多解释如何展平列表列表的SO 问题,但我没有发现如何避免在列表理解中创建子列表。
解决方案
使用嵌套理解 à la:
[y for x in [1,2,3] for y in range(x)]
# [0, 0, 1, 0, 1, 2]
或者,如果您喜欢实用程序和神秘简洁:
from itertools import chain
[*chain(*map(range, [1, 2, 3]))]
# or, as the traditionalists would suggest:
# list(chain.from_iterable(map(range, [1, 2, 3])))
推荐阅读
- google-sheets - 当行被移动并且上面的行发生变化时在上面添加列
- r - 如何在r中为回归线上方和下方的ggplot点着色?
- python - 尽管 Big-O 相同,为什么这两个函数的性能差异如此之大?
- arrays - How to sort list by sub list value in flutter?
- kubernetes-ingress - haproxy-ingress 多个后端规则
- google-apps-script - Google Apps 脚本“脚本属性”实际上是“项目属性”吗?正确的范围是多少?
- java - Web 应用程序监听服务器事件的最佳方式
- android - 了解android中的隐藏过程
- javascript - 反应导航 - 无法读取未定义的属性“推送”
- python - 为什么“超级”的论点很重要?