【问题标题】:Unpack list and yield its members解包列表并生成其成员
【发布时间】: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


【解决方案1】:

python3有yield from,所以你可以yield from get_list(i)

python2 没有这个,所以for ...: yield 循环有时是必要的。

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多