如果我想在Python中合并两个迭代器,其中一种方法是使用
例如,如果我有两个范围
一种解决方案是将范围转换为列表。但是这种方法无法扩展。
有没有办法确保
itertools.chain
。例如,如果我有两个范围
range(50, 100, 10)
和range(95, 101)
,我可以用itertools.chain(range(50, 100, 10), range(95, 101))
得到一个范围[50, 60, 70, 80, 90, 95, 96, 97, 98, 99, 100]
。
tqdm
是Python中的一个可扩展进度条。但是,默认情况下,即使迭代器已经固定,它似乎也无法计算itertools.chain
表达式中的项目数。一种解决方案是将范围转换为列表。但是这种方法无法扩展。
有没有办法确保
tqdm
理解链接的迭代器?from tqdm import tqdm
import itertools
import time
# shows progress bar
for i in tqdm(range(50, 100, 10)):
time.sleep(1)
# does not know number of items, does not show full progress bar
for i in tqdm(itertools.chain(range(50, 100, 10), range(95, 101))):
time.sleep(1)
# works, but doesn't scale
my_range = [*itertools.chain(range(50, 100, 10), range(95, 101))]
for i in tqdm(my_range):
time.sleep(1)