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

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

Python:編寫嵌套 for 循環(huán)和 if 語句的更好方法

Python:編寫嵌套 for 循環(huán)和 if 語句的更好方法

叮當(dāng)貓咪 2023-06-20 14:07:28
我試圖找到一種更 Pythonic 的方式來執(zhí)行以下操作。for employee in get_employees:    for jobs in employee['jobs']:        for nemployee in employee_comps:            if nemployee['employee_id'] == employee['id']:                for njob in nemployee['hourly_compensations']:                    if njob['job_id'] == jobs['id']:                        njob['rate'] = jobs['rate']它有效但看起來笨重。我是 Python 的新手,如果有另一個線程可以幫助解決這個問題,請直接告訴我!
查看完整描述

1 回答

?
慕標(biāo)琳琳

TA貢獻1830條經(jīng)驗 獲得超9個贊

我對代碼的主要評論是您可以自由更改外部三個循環(huán)的順序for,因為您正在執(zhí)行的操作不依賴于您循環(huán)這些循環(huán)的順序(因為您沒有打破任何找到匹配項時循環(huán)),并且鑒于這種情況,僅進行循環(huán)jobs以到達if其中獨立于 . 值的語句是沒有意義的jobs。將循環(huán)放在其他兩個循環(huán)內(nèi)會更有效jobs,這樣它也可以在 內(nèi)if,即循環(huán)只對那些值的組合employee和條件求值的nemployee地方執(zhí)行。ifTrue


除此之外但不太重要的是,for在進行此重新排列后有連續(xù)語句(獨立的可迭代對象)時,您可以將它們替換為迭代器上的單個循環(huán), itertools.product以減少循環(huán)嵌套的深度for(如果您愿意)(從四個減少到兩個)顯式循環(huán)):


from itertools import product


for employee, nemployee in product(get_employees, employee_comps):

    if nemployee['employee_id'] == employee['id']:

        for jobs, njob in product(employee['jobs'],

                                  nemployee['hourly_compensations']):

            if njob['job_id'] == jobs['id']:

                njob['rate'] = jobs['rate']


查看完整回答
反對 回復(fù) 2023-06-20
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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