首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用列表理解避免嵌套循环

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

Stack Overflow用户
提问于 2018-06-21 03:28:31
回答 1查看 294关注 0票数 0

我想知道在下面的例子中使用列表理解来避免嵌套循环是不是一个好主意

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

代码语言:javascript
复制
# config.py
NAME_LIST = [
    'name1',
    'name2',
    (...)
]

我使用这个名称列表遍历多个不同的目录,对于我找到的每个文件,我读取文件的内容并处理数据。

这是我的实际代码:

代码语言:javascript
复制
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)

我真的希望避免嵌套循环,以尽可能保持代码的扁平化。

我试着使用列表理解来解决这个问题,但我不确定这是不是最好的解决方案,因为我不希望它返回任何东西。

下面是我所做的

代码语言:javascript
复制
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 

在这种情况下,列表理解是一个很好的解决方案吗?有没有更好的方法来实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 03:41:52

有一些方法可以避免不必要的输出(Is there a map without result in python?),但for循环可能是最常用的方法?你想让它变平有什么原因吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50955701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档