亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在一個周期內使用生成器輸出和列表?

如何在一個周期內使用生成器輸出和列表?

躍然一笑 2023-07-05 16:13:46
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


查看完整回答
反對 回復 2023-07-05
?
溫溫醬

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)


查看完整回答
反對 回復 2023-07-05
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

for i in zip(my_list, my_gen()):
  print(*i)

說實話,我不太明白你的問題。請更好地解釋一下自己。

編輯:是*解壓函數zip()創建的元組。


查看完整回答
反對 回復 2023-07-05
?
拉莫斯之舞

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)


查看完整回答
反對 回復 2023-07-05
  • 4 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號