如何使用tqdm迭代列表

时间:2018-03-16 11:44:44

标签: python list loops for-loop tqdm

我想知道处理某个列表需要多长时间。

for a in tqdm(list1):
    if a in list2:
        #do something

但这不起作用。如果我使用for a in tqdm(range(list1)),我将无法检索列表值。

你知道怎么做吗?

5 个答案:

答案 0 :(得分:1)

import tqdm

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

答案 1 :(得分:0)

那应该有用。除非你不记得导入tqdm。尝试再次导入它。希望它有效

答案 2 :(得分:0)

我也有这个问题。 就我而言,我写道:

import tqdm

代替

from tqdm import tqdm

答案 3 :(得分: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

答案 4 :(得分:0)

我写了很多答案,因为我个人在微型项目和项目的不同地方使用了所有这些答案。根据问题,有些可能无关紧要,但在其他地方还是有用的。

remove

list1 = list(range(100))

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

基本上,您正在传递列表以创建tqdm实例。

您可以使用tqdm documentation中的另一种解决方法:

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

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

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

具有自动更新:

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

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

除了问题之外,如果您使用的是熊猫数据框,则可能需要在Google colaboratory的某个时间使用它:

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

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

- Himanshu