可以直接用函数返回的列表元组扩展多个列表吗?

3 投票
2 回答
601 浏览
提问于 2025-04-16 14:11

我有一个函数,它会检查文件和目录的变化,然后返回一个包含多个列表的元组,像这样:addedFiles, removedFiles, addedDirs, removedDirs。这个元组里的每个子列表都是字符串的列表(或者是空的)。我需要把这个函数返回的结果添加到这些列表的本地版本中。

这个经过大量修改的代码展示了我想要的结果:

addedFiles, removedFiles, addedDirs, removedDirs = [],[],[],[]

for dir in allDirs:
    a,b,c,d = scanDir( dir )
    addedFiles.extend( a )
    removedFiles.extend( b )
    addedDirs.extend( c )
    removedDirs.extend( d )

但是,我想知道在for循环里面的部分有没有更好的写法?
这样写感觉有点……难看

2 个回答

2
params = ('addedFiles', 'removedFiles', 'addedDirs', 'removedDirs')
paramDict = dict((param, []) for param in params)

for dir in allDirs:
    for param, data in zip(params, scanDir(dir)):
        paramDict[param].extend(data)

现在你有了一个字典,里面包含了多个列表,而不是四个单独的列表。

6

这样怎么样:

 for a,b in zip(lists, extendwith):
     a.extend(b)

撰写回答