【发布时间】:2023-04-09 16:56:01
【问题描述】:
我是 Python 新手。我的代码如下所示:
def foo():
for i in range(100):
### code...
for j in get_list(i): yield j
有没有办法直接解压get_list() 和yield 返回的列表而不用for j in get_array(i) 再次循环?使用另一个循环是否会降低性能?
还是我做对了?
【问题讨论】:
-
你用的是哪个版本的python?
-
您考虑的性能原因是什么?无论哪种方式,都会产生完全相同的产量。
-
如果函数 get_list 实际上返回一个列表,并且您希望列表完整,您可以只生成整个列表,如果您想聚合所有返回的列表,您可以使用 list .extend(returned_list) 将它一起构建成一个列表
-
@DanielRoseman 没什么。我是一个菜鸟,我认为我做的不对,有一种更快、更好、更优雅的方法来做。
-
可能类似于
itertools.chain.from_iterable(map(gen_list, range(100)))(Python 2 上的imap)。
标签: python performance python-2.7 for-loop