Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何将TQM进度条替换为嵌套循环中的下一个进度条?_Python_Jupyter Notebook_Tqdm - Fatal编程技术网

Python:如何将TQM进度条替换为嵌套循环中的下一个进度条?

Python:如何将TQM进度条替换为嵌套循环中的下一个进度条?,python,jupyter-notebook,tqdm,Python,Jupyter Notebook,Tqdm,我使用Jupyter笔记本中的模块。假设我有下面一段带有嵌套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:

我使用Jupyter笔记本中的模块。假设我有下面一段带有嵌套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]
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)

您可以通过在每次内部循环开始之前重置进度条对象来实现这一点

尝试以下代码以获得所需的结果

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


请从@hamza khurshid找到三个循环的修改答案

导入时间
从tqdm.auto导入tqdm
#初始化进度条对象
外环=tqdm(范围(3))
中间环路=tqdm(范围(5))
内环=tqdm(范围(7))
对于范围内的i(len(外环)):
mid_loop.refresh()#强制打印最终状态
mid_loop.reset()#重用条
外部循环。更新()#更新外部TQM
对于范围内的j(len(中_环)):
内部循环。刷新()#强制打印最终状态
内部循环.重置()#重用条
mid_loop.update()##更新mid tqdm
对于范围内的k(len(内部_循环)):
内部循环。更新()#更新内部TQM
时间。睡眠(1)
打印(i、j、k)
请查看以下输出:

这也是关于这个问题的答案

谢谢并致以最良好的问候


Michael

创建进度条时,可以使用leave param。大概是这样的:

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

感谢@michael schroter让我注意到这一点,感谢@jaroslav bezděk提供原始帖子

我更喜欢@anton pomieshchenko的答案。然而,正如前面提到的,内部条会不断消失,并且在外部条每次更新时都会重新出现,如果这种情况快速频繁地发生,可能看起来很糟糕

回答正确(假设您不需要重复使用外杆,但确实要重复使用内杆):


嗨@hamza khurshid谢谢你的回答。我已经在下面添加了一些内容。谢谢,再次感谢这将删除内部进度条,并每次重新创建它。因此,如果在这些循环中有更多的工作要做,而不仅仅是睡眠,那么进度条将执行隐藏和查找。解决方案有缺点,但我认为它是实现作者需要的更好的方法。代码更少错误更少)非常感谢。这正是我要找的!不幸的是,这无助于
progress\u为对象应用
方法。