我刚刚阅读了发电机,并想知道如何使用发电机:
假设有两个文件,每个文件都有一个时间列。每个文件按升序时间排序,我希望使用时间优先级抓取这些文件中的行。而不是写一个简单的表达式(见下文),我想知道创建一个生成器next()是否是一个更好/适当的方式来读取这两个文件的时间优先级。
for line1 in file1:
do_something
try:
if time1<time2:
do_something
continue
else:
do_something
except:
pass
for line2 in file2:
do_something
if time2>time1:
break
答案 0 :(得分:10)
def generate_timeline(file):
for line in file:
time1 = extract_time_from_line(line)
yield time1, line
for (time1, line) in heapq.merge(generate_timeline(file1), generate_timeline(file2)):
process(line)