蟒蛇:如何在嵌套循环中用下一个进度条替换tqdm进度条?

我在聚比特笔记本中使用tqdm模块。假设我有以下一段带有嵌套 for 循环的代码。


import time

from tqdm.notebook import tqdm


for 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]

是否有任何选项,如何在运行期间仅显示当前进度条?那么,完成迭代后的最终输出会是这样的吗?j


100%|██████████| 3/3 [00:15<00:00, 5.07s/it]

100%|██████████| 5/5 [00:05<00:00, 1.01s/it]


人到中年有点甜
浏览 269回答 4
4回答

DIEA

您可以在创建进度条时使用离开参数。像这样:import timefrom tqdm import tqdmfor i in tqdm(range(3)):&nbsp; &nbsp; for j in tqdm(range(5), leave=bool(i == 2)):&nbsp; &nbsp; &nbsp; &nbsp; time.sleep(1)

心有法竹

您可以通过每次在内部循环开始之前重置进度条对象来实现此目的。请尝试以下代码以获得所需的结果。import timefrom tqdm.notebook import tqdm#initializing progress bar objectsouter_loop=tqdm(range(3))inner_loop=tqdm(range(5))for i in range(len(outer_loop)):&nbsp; &nbsp; inner_loop.refresh()&nbsp; #force print final state&nbsp; &nbsp; inner_loop.reset()&nbsp; #reuse bar&nbsp; &nbsp; outer_loop.update() #update outer tqdm&nbsp; &nbsp; for j in range(len(inner_loop)):&nbsp; &nbsp; &nbsp; &nbsp; inner_loop.update() #update inner tqdm&nbsp; &nbsp; &nbsp; &nbsp; time.sleep(1)输出:

梵蒂冈之花

我更喜欢@anton-波米申科的答案。然而,如前所述,每次外部条形更新时,内部条形都会消失并重新出现,如果它快速而频繁地发生,这可能会看起来很糟糕。正确答案(假设您不需要重用外部栏,但确实要重用内部栏):from time import sleepfrom tqdm.auto import tqdmwith tqdm(range(3)) as outer:&nbsp; &nbsp; inner_total = 3&nbsp; &nbsp; with tqdm(total=inner_total) as inner:&nbsp; &nbsp; &nbsp; &nbsp; for i in outer:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inner.reset(inner_total)&nbsp; # reinitialise without clearing&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for j in range(inner_total):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sleep(1)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inner.update()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inner.refresh()&nbsp; # print last state without clearing

吃鸡游戏

import timefrom tqdm.auto import tqdm#initializing progress bar objectsouter_loop=tqdm(range(3))mid_loop=tqdm(range(5))inner_loop=tqdm(range(7))for i in range(len(outer_loop)):&nbsp; &nbsp; mid_loop.refresh()&nbsp; #force print final state&nbsp; &nbsp; mid_loop.reset()&nbsp; #reuse bar&nbsp; &nbsp; outer_loop.update() #update outer tqdm&nbsp; &nbsp; for j in range(len(mid_loop)):&nbsp; &nbsp; &nbsp; &nbsp; inner_loop.refresh()&nbsp; #force print final state&nbsp; &nbsp; &nbsp; &nbsp; inner_loop.reset()&nbsp; #reuse bar&nbsp; &nbsp; &nbsp; &nbsp; mid_loop.update()&nbsp; ##update mid tqdm&nbsp; &nbsp; &nbsp; &nbsp; for k in range(len(inner_loop)):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inner_loop.update() #update inner tqdm&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; time.sleep(1)print(i,j,k)请在下面找到输出:这也是github上问题的答案谢谢 & 最好的问候迈克尔
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python