python - 嵌套生成器到嵌套列表
问题描述
我有时会遇到这样一种情况,即我正在使用一个生成器,其成员本身就是生成器(等等 n 个级别)。
调试的时候,打印这些结果没用<generator object blah at blah>
显然,我可以print(list(my_gen))
将顶层转换为列表。但后来我得到
[<generator object blah at blah>, <generator object blah at blah>, <generator object blah at blah>]
这同样没用。
是否有一个简单的命令可以打印一直评估的嵌套生成器?
我知道我可以编写一个递归函数来做到这一点,但我正在寻找一种简单的方法。
解决方案
您可以编写一个递归函数来评估N 级嵌套生成器。我认为不存在为此的内置函数。
import types
def _gen(gen):
if not isinstance(gen,types.GeneratorType):
return gen
else:
return [_gen(i) for i in gen]
my_gen=((j for j in range(i)) for i in range(10))
print(_gen(my_gen))
[[],
[0],
[0, 1],
[0, 1, 2],
[0, 1, 2, 3],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5, 6],
[0, 1, 2, 3, 4, 5, 6, 7],
[0, 1, 2, 3, 4, 5, 6, 7, 8]]
推荐阅读
- netlogo - 我必须多次运行模型
- sql - 显示 SQL 跟踪(Springboot+Mybatis)
- jquery - 当子 Div 的显示为无时如何隐藏父 Div
- flutter - Flutter - TextFormField 上的 Time.now()
- python-2.7 - 在 GoogleAppEngine oauth flow 中如何获取 Web App 凭据
- nativescript - 如何在 NativeScript 中设置资产的正确路径?
- dotnetnuke - 禁用 CKEditor 中的“电话号码”字段
- ruby-on-rails - 获取两个日期之间的天数Rails“日期”
- spring-boot - 使用 AutoConfigureMockMvc 和 CompletableFuture 测试 ControllerAdvice
- javascript - NavigationService 减慢了 react-native 生产