如何解决如何在一个周期内使用生成器输出和列表?
my_list = [1,2,3]
def my_gen():
yield 4
yield 5
yield 6
for i in my_list:
print(i) # 1,3
for i in my_gen():
print(i) # 4,5,6
如何实施下一个周期?我希望得到:1,3,4,6
for i in [my_list,my_gen()]:
print(i) # 1,3 <generator object my_gen...> -> 1,6
解决方法
有一个用于此目的的助手:itertools.chain
for i in itertools.chain(my_list,my_gen()):
print(i)
注意:还有一个类似的功能,用于汇总对地图(字典,...)ChainMap
的访问 ,如果您想要的是相同的输出,则可以将生成器转换为列表。
但这还不够,因为您将打印列表本身而不是其中的值。
您需要解压缩列表,然后在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)
,
for i in zip(my_list,my_gen()):
print(*i)
说实话,我不太了解您的问题。请更好地解释自己。
编辑:*
将解压缩zip()
函数创建的元组。
语法yield from
是一个非常未知的功能,它允许将要产生的元素委托给另一个生成器。这具有不将my_gen
转换为列表的优点。例如:
my_list = [1,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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。