my_list = [1,2,3]def my_gen(): yield 4 yield 5 yield 6for i in my_list: print(i) # 1,2,3for i in my_gen(): print(i) # 4,5,6下一个周期如何实施?我期望得到:1,2,3,4,5,6for i in [my_list, my_gen()]: print(i) # 1, 2, 3 <generator object my_gen...> -> 1,2,3,4,5,6
4 回答

慕容3067478
TA贡献1773条经验 获得超3个赞
有一个用于此目的的助手:itertools.chain
for i in itertools.chain(my_list, my_gen()): print(i)
注意:还有一个类似的函数用于聚合对地图(dicts,...)的访问ChainMap

温温酱
TA贡献1752条经验 获得超4个赞
如果您想要相同的输出,可以将生成器转换为列表。
但这还不够,因为您将打印列表本身,而不是其中的值。
您需要的是解压列表,并在 for 循环中使用它。
my_list = [1,2,3]
def my_gen():
yield 4
yield 5
yield 6
for i in [*my_list, *list(my_gen())]:
print(i)

临摹微笑
TA贡献1982条经验 获得超2个赞
for i in zip(my_list, my_gen()): print(*i)
说实话,我不太明白你的问题。请更好地解释一下自己。
编辑:是*
解压函数zip()
创建的元组。

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
语法是一个相当未知的功能yield from,它允许将要生成的元素委托给另一个生成器。这样做的优点是不转换my_gen为列表。例如:
my_list = [1, 2, 3]
def my_gen():
yield 4
yield 5
yield 6
def my_final_gen():
yield from my_list
yield from my_gen()
for x in my_final_gen():
print(x)
添加回答
举报
0/150
提交
取消