python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python中tqdm和zip一起用进度条不显示

如何解决Python中tqdm和zip一起用进度条不显示问题

作者:uruz_L

这篇文章主要介绍了如何解决Python中tqdm和zip一起用进度条不显示问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python中tqdm和zip一起用进度条不显示

在下面这个例子中,tqdm可以正常使用:

from tqdm import tqdm
from time import sleep
for _ in tqdm(range(10)): 
    sleep(0.1) 

但是在下面这个例子里面,将tqdm和zip一起使用,不显示进度条

for _, _ in tqdm(zip(range(10), range(10))):
    sleep(0.1)

 在stackoverflow上有解决方案,使用tqdm中contrib包里面的tzip,相当于上面的功能,并且正常显示进度条,前提是tqdm版本>=4.42.0

from tqdm.contrib import tzip
from time import sleep
for _, _ in tzip(range(10), range(10)):
    sleep(0.1)

当 tqdm 遇上 enumerate

tqdm是一个可以显示进度条的模块

pip install tqdm  # 安装
from tqdm import tqdm
for item in tqdm(range(100)):
	# do something
>>> # output
100%|██████████████████████████████████████| 100/100 [00:00<00:00, 60159.27it/s]

enumerate()函数是python的内置函数,可以同时遍历 lt 中的元素及其索引,

如下,i是索引,itemlt中的元素

from tqdm import tqdm
lt=['a','b','c']
for i,item in enumerate(lt):
	print(i,item) 
>>> # output
0 a
1 b
2 c

tqdmenumerate() 结合:

from tqdm import tqdm
lt=['a','b','c']
for i,item in enumerate(tqdm(lt)):
    print(i, item)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文