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]
但这并不好,它只是更短而已。代码行不是质量的衡量标准!谢谢虽然我需要将每个目录中的文件存储在不同的变量中,但每个目录包含不同类型的数据,我不想将这些数据混合在一起。我编辑了我的问题,以防它变得清晰。尽管可以使用不同的变量,但在这种情况下,最好使用列表。这样,您需要搜索的目录数量可以是任意的,您可以为列表中与给定目录对应的项目编制索引。如果目录名都是唯一的,您也可以使用字典。将每个键定义为唯一的目录名,将值定义为相应文件的列表谢谢您的所有输入。你能给我举一个如何使用字典的例子吗?