如何使用嵌套for循环来改进此功能?

时间:2017-10-03 07:19:36

标签: python for-loop nested generator

我想知道如何使用嵌套for循环来提高此函数的可读性。也许我可以nested for loop使用tags_files =

def search_repotag_for_file(search_filepath, repo):
    '''Goes through all tags, all files to find a github file entity
       which matches the search_filepath we are looking for'''
    all_tags = (tag for tag in repo.tags)
    tags_files = ((tag, file_ent) for tag in all_tags for file_ent in tag.commit.tree.traverse())
    matches = (tup for tup in tags_files if tup[1].path == search_filepath)
    return matches

1 个答案:

答案 0 :(得分:5)

让我为你重写你的功能:

def search_repotag_for_file(search_filepath, repo):
    for tag in repo.tags:
        for file_ent in tag.commit.tree.traverse():
            if file_ent.path == search_filepath:
                yield (tag, file_ent)

您要查找的关键字是yield