如何使用tqdm迭代遍历列表

12
我想知道处理某个列表需要多长时间。
for a in tqdm(list1):
    if a in list2:
        #do something

但是这样做不起作用。如果我使用for a in tqdm(range(list1)),我将无法检索列表的值。
你知道如何解决这个问题吗?
4个回答

28
import tqdm

for p in tqdm.tqdm([10,50]):
    print(p)
或者
from tqdm import tqdm

for p in tqdm([10,50]):
    print(p)

7

我也遇到了这个问题。 在我的情况下,我写了:

import tqdm

替代

from tqdm import tqdm

4

我写了很多答案,因为我个人在我的小项目和项目中在不同的地方都用到了这些知识。有些可能与问题无关,但在其他地方会很有用。

list1 = list(range(100))

import tqdm
for x in tqdm.tqdm(list1):
        sleep(0.01)

或者
tlist1 = tqdm.tqdm(list1)
for x in tlist1:
        sleep(0.01)

基本上,您将列表传递给创建tqdm实例的函数。

您可以使用另一种解决方法,就像在tqdm文档中所述:

# DOESN't work well in terminal, but should be ok in Jupyter Notebook
with tqdm.tqdm(total=len(list1)) as t:
    for x in list1:
        sleep(0.01)
        t.update(1)

使用生成器与手动更新trange对象:

def literate(list1):
    t = trange(len(list1))
    for x in list1:
        t.update(1)
        yield x

for x in literate(list1):
    sleep(0.01)

通过自动更新:

def li_iterate(li):
    l = iter(li)
    for _ in trange(len(li)):
        yield next(l)

for x in li_iterate(list1):
    sleep(0.01)

除此之外,如果你正在使用pandas dataframe,有时候可能需要在google-colaboratory中使用以下内容:

# %% implies cell magic in google-colab
%%capture
from tqdm.notebook import tqdm as tq
tq().pandas()

def fn(x):
    for a in list2:
        print(x, a)

import pandas as pd
list1 = list(range(0, 9))
pd.DataFrame(data=list1).progress_apply(fn)

-希曼什


0

List是一个包含元素的列表,因此如果您执行len(ls),它会给出列表中元素的数量。range内置函数将迭代范围,因此以下for循环应该适用于tqdm

from tqdm import tqdm

ls = [i for i in range(0,20000000)]

for i in tqdm(range(len(ls))):
  ## code goes here ##
  pass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接