我刚刚读了一些发电机的资料,想知道你会如何使用发电机:
假设有两个文件,每个文件都有一个时间列。每个文件都按升序时间排序,我希望使用时间优先级获取这些文件中的行。。

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

最佳答案

使用heapq.merge

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)

10-03 00:10