4 回答

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)

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)
輸出:

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

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)
請在下面找到輸出:
這也是github上問題的答案
謝謝 & 最好的問候
邁克爾
添加回答
舉報