第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

避免生成嵌套迭代器然后立即解包

避免生成嵌套迭代器然后立即解包

翻閱古今 2021-07-22 16:02:50
在我正在處理的一些代碼中,我正在處理生成許多需要組合的單級深度嵌套迭代器。作為一個可行的解決方案,我已經(jīng)將這些部分中的每一個都封裝在了chain(*(one_level_nested))其中chain(來自廣受歡迎的itertools模塊)。然而,多次重復(fù)這個表達(dá)讓我覺得這個表達(dá)很丑陋,可能會被誤導(dǎo);作為一級深度生成代碼的一個例子,它們中的大多數(shù)都是按以下方式構(gòu)建的:[j for j in something_needing_i(i)] for i in range(5)因此我最終得到chain(*([j for j in something_needing_i(i)] for i in range(5))).有沒有更好的方法,特別是在不解包的情況下生成迭代器并且具有可比的效率(或理想情況下,更好的效率)?
查看完整描述

1 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊

您可以只使用以下嵌套:

(j for i in range(5) for j in something_needing_i(i))

為了得到一個平面發(fā)電機(jī)。這也避免了虛假的中間列表以獲得更好的空間效率。

這兩個for結(jié)構(gòu)的順序一開始可能看起來違反直覺,因為與創(chuàng)建嵌套生成器/列表的順序相比,您必須改變它們。此外,它們的范圍不符合我的自然語言“感覺”,但這就是它們的工作方式。


查看完整回答
反對 回復(fù) 2021-07-28
  • 1 回答
  • 0 關(guān)注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號