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

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

蟒蛇:如何在嵌套循環中用下一個進度條替換tqdm進度條?

蟒蛇:如何在嵌套循環中用下一個進度條替換tqdm進度條?

人到中年有點甜 2022-09-20 15:41:51
我在聚比特筆記本中使用tqdm模塊。假設我有以下一段帶有嵌套 for 循環的代碼。import timefrom tqdm.notebook import tqdmfor i in tqdm(range(3)):    for j in tqdm(range(5)):        time.sleep(1)輸出如下所示:100%|██████████| 3/3 [00:15<00:00, 5.07s/it]100%|██████████| 5/5 [00:10<00:00, 2.02s/it]100%|██████████| 5/5 [00:05<00:00, 1.01s/it]100%|██████████| 5/5 [00:05<00:00, 1.01s/it]是否有任何選項,如何在運行期間僅顯示當前進度條?那么,完成迭代后的最終輸出會是這樣的嗎?j100%|██████████| 3/3 [00:15<00:00, 5.07s/it]100%|██████████| 5/5 [00:05<00:00, 1.01s/it]
查看完整描述

4 回答

?
DIEA

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

您可以在創建進度條時使用離開參數。像這樣:


import time

from tqdm import tqdm


for i in tqdm(range(3)):

    for j in tqdm(range(5), leave=bool(i == 2)):

        time.sleep(1)


查看完整回答
反對 回復 2022-09-20
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

您可以通過每次在內部循環開始之前重置進度條對象來實現此目的。


請嘗試以下代碼以獲得所需的結果。


import time

from tqdm.notebook import tqdm


#initializing progress bar objects

outer_loop=tqdm(range(3))

inner_loop=tqdm(range(5))


for i in range(len(outer_loop)):

    inner_loop.refresh()  #force print final state

    inner_loop.reset()  #reuse bar

    outer_loop.update() #update outer tqdm


    for j in range(len(inner_loop)):

        inner_loop.update() #update inner tqdm

        time.sleep(1)

輸出:

http://img1.sycdn.imooc.com//63296ee70001875c04770079.jpg

查看完整回答
反對 回復 2022-09-20
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

我更喜歡@anton-波米申科的答案。然而,如前所述,每次外部條形更新時,內部條形都會消失并重新出現,如果它快速而頻繁地發生,這可能會看起來很糟糕。


正確答案(假設您不需要重用外部欄,但確實要重用內部欄):


from time import sleep

from tqdm.auto import tqdm


with tqdm(range(3)) as outer:

    inner_total = 3

    with tqdm(total=inner_total) as inner:

        for i in outer:

            inner.reset(inner_total)  # reinitialise without clearing

            for j in range(inner_total):

                sleep(1)

                inner.update()

            inner.refresh()  # print last state without clearing


查看完整回答
反對 回復 2022-09-20
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

import time

from tqdm.auto import tqdm


#initializing progress bar objects

outer_loop=tqdm(range(3))

mid_loop=tqdm(range(5))

inner_loop=tqdm(range(7))



for i in range(len(outer_loop)):


    mid_loop.refresh()  #force print final state

    mid_loop.reset()  #reuse bar

    outer_loop.update() #update outer tqdm


    for j in range(len(mid_loop)):

        inner_loop.refresh()  #force print final state

        inner_loop.reset()  #reuse bar

        mid_loop.update()  ##update mid tqdm


        for k in range(len(inner_loop)):

            inner_loop.update() #update inner tqdm

            time.sleep(1)

print(i,j,k)

請在下面找到輸出:

http://img1.sycdn.imooc.com//63296f0d0001a5cd04800118.jpg

這也是github問題的答案

謝謝 & 最好的問候

邁克爾


查看完整回答
反對 回復 2022-09-20
  • 4 回答
  • 0 關注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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