我想知道在下面的例子中使用列表理解来避免嵌套循环是不是一个好主意
想象一下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)
我真的希望避免嵌套循环,以尽可能保持代码的扁平化。
我试着使用列表理解来解决这个问题,但我不确定这是不是最好的解决方案,因为我不希望它返回任何东西。
下面是我所做的:
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
在这种情况下,列表理解是一个很好的解决方案吗?有没有更好的方法来实现这一点?
发布于 2018-06-21 03:41:52
有一些方法可以避免不必要的输出(Is there a map without result in python?),但for循环可能是最常用的方法?你想让它变平有什么原因吗?
https://stackoverflow.com/questions/50955701
复制相似问题