繁体   English   中英

使用列表理解避免嵌套循环

[英]Avoid nested loops using list-comprehension

我想知道在以下情况下使用List Comprehension避免嵌套循环是否是一个好主意

想象一下config.py文件中的以下名称列表

# config.py
NAME_LIST = [
    'name1',
    'name2',
    (...)
]

我正在使用此名称列表来浏览多个不同的目录,对于找到的每个文件,我都会读取文件内容并处理数据。

这是我的实际代码:

import config

def foo():

    for w in config.NAME_LIST:
        folder = "/data/test/{name}/in".format(name=w)
        files = list_files(folder) # return a list of files found in folder

        for f in files:
            content = read_file(folder, f) # read files content
            # (... do some stuff to process data)

我真的很想避免嵌套循环,以使代码尽可能平坦。

我尝试使用List Comprehension来解决这个问题,但是由于我不希望它返回任何内容,所以不确定这是最好的解决方案。

这是我所做的:

import config

def foo():

    def _process(f):
        """function called from list comprehension to avoid doing nested loops"""
        content = read_file(folder, f)  # read files content
        # (... do some stuff to process data)

    for w in config.NAME_LIST:
        folder = "/data/test/{name}/in".format(name=w)
        files = list_files(folder) # return a list of files found in folder
        [_process(f) for f in files] # using list comprehension 

在这种情况下, 列表理解是一个好的解决方案吗? 有什么更好的方法来实现这一目标?

有一些使用过滤器的技巧或其他技巧,以避免不必要的输出( 在python中是否有没有结果的映射? ),但是for循环可能是最惯用的方法? 您是否有理由要它放平?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM