Python 如何在for循环中使用列表理解附加到列表变量

Python 如何在for循环中使用列表理解附加到列表变量,python,Python,我有两个文件夹,其中包含具有相同结构的文件。说dir1=\home\usr1和dir2=\home\usr2 我想创建两个列表变量(比如dir1_文件和dir2_文件),每个变量包含每个目录中每个文件的文件路径 通过使用两个for循环(每个direcory一个)和以下代码,我们已经成功地做到了这一点,但必须有一种更有效的方法来做到这一点 for files in os.listdir(dir1): file = os.path.join(dir1, files)

我有两个文件夹,其中包含具有相同结构的文件。说
dir1=\home\usr1
dir2=\home\usr2

我想创建两个列表变量(比如
dir1_文件
dir2_文件
),每个变量包含每个目录中每个文件的文件路径 通过使用两个for循环(每个direcory一个)和以下代码,我们已经成功地做到了这一点,但必须有一种更有效的方法来做到这一点

for files in os.listdir(dir1): 
        file = os.path.join(dir1, files)
        dir1_files.append(file)

for files in os.listdir(dir2): 
        file = os.path.join(dir2, files)
        dir2_files.append(file)
编辑:在应用了你的建议之后,我最终得到了以下有效的结论。请随意提出更优雅的解决方案

for dir_in in [dir1, dir2]: 
        for files in os.listdir(dir_in): 
                  file = os.path.join(dir_in, files)
                  if dir_in==dir1:  
                        dir1_files.append(file)
                  else:
                        dir2_files.append(file)

在windows中使用python 3(如果相关的话)

您可以使用下面所写的列表理解来执行上述操作

dir_files = [os.path.join(dir, files) for files in os.listdir(dir)]
如果需要查看多个目录,可以编写for循环并迭代每个目录,并将结果存储在另一个列表中

dirs = []
dirlist = [dir1, dir2]
for dir in dirlist: # iterating through all directory in directory list
    dir_files = [os.path.join(dir, files) for files in os.listdir(dir)]
    dirs.append(dir_files)

当然,您也可以将列表理解应用于上述代码,但通常情况下,即使有更有效的方法,也最好有可读的代码。

它简洁、易于理解且有效。为什么会困扰您?将循环转换为列表理解以获得1行。谢谢,我只需要理解逻辑,以便将其应用于更复杂的问题。我认为列表理解是一种方式。你能告诉我如何使用列表理解来附加到一个不同的变量吗?或者甚至是一个linier:
dir1\u文件,dir2\u文件=[[os.path.join(d,file)for file in os.listdir(d)]for d in[dir1,dir2]
但这并不好,它只是更短而已。代码行不是质量的衡量标准!谢谢虽然我需要将每个目录中的文件存储在不同的变量中,但每个目录包含不同类型的数据,我不想将这些数据混合在一起。我编辑了我的问题,以防它变得清晰。尽管可以使用不同的变量,但在这种情况下,最好使用列表。这样,您需要搜索的目录数量可以是任意的,您可以为列表中与给定目录对应的项目编制索引。如果目录名都是唯一的,您也可以使用字典。将每个键定义为唯一的目录名,将值定义为相应文件的列表谢谢您的所有输入。你能给我举一个如何使用字典的例子吗?