将生成器表达式转换为列表有哪些不同的方法?

What are the different ways to convert a generator expression to a list?

mylist = [1, 2, 3, 4, 5]
my_gen = (item for item in mylist if item > 3)
new_list = list(my_gen)

将生成器表达式传递给 list 函数是我学习将生成器表达式转换为列表的一种方法。只是想知道这是否可以采用任何其他不同的方式?

您可以解压生成器:

[*my_gen]
>>[4,5]

不清楚您是在寻找替代品还是更短的。

简而言之,您不需要中间变量。

list(item for item in mylist if item > 3)

效果相同

[item for item in mylist if item > 3]

对于生成器的替代方案,您可以在 mylist 上使用 filter 函数,但您仍然需要 list() 函数,或 list-compression,或一段时间循环调用 next() 直到生成器耗尽了制作列表的替代方案