Python 使用for循环将列表拆分为子列表

Python 使用for循环将列表拆分为子列表,python,string,list,for-loop,pathlib,Python,String,List,For Loop,Pathlib,我有一个通过执行pathlib.glob()得到的文件列表。从这个列表中,我需要根据它们的扩展名(首先是.1,然后是.2,等等)将它们分块处理 我只能得到第一组要显示的文件,然后我会一直得到空列表。我知道我可以通过改变我的初始glob来解决这个问题,但事实上我没有看到这个问题,这意味着我不理解某些东西是如何在引擎盖下工作的,我想得到一些帮助来解决这个问题 这是我第一次尝试使用列表理解: Import sys, os from pathlib import Path folder = Path(o

我有一个通过执行pathlib.glob()得到的文件列表。从这个列表中,我需要根据它们的扩展名(首先是.1,然后是.2,等等)将它们分块处理

我只能得到第一组要显示的文件,然后我会一直得到空列表。我知道我可以通过改变我的初始glob来解决这个问题,但事实上我没有看到这个问题,这意味着我不理解某些东西是如何在引擎盖下工作的,我想得到一些帮助来解决这个问题

这是我第一次尝试使用列表理解:

Import sys, os
from pathlib import Path
folder = Path(os.getcwd())
files = folder.glob('*dat*')
for i in range(4):
    extension = '*.'+str(i+1)
    cat = [x for x in files if x.match(extension)]
    print(cat)
打印[带有.1][]的文件

我使用过滤器得到相同的输出

for i in range(4):
        extension = '.'+str(i+1)
        cat = list(filter(lambda x:str(x).endswith(extension), files))

显然,我遗漏了一些东西,但我不知道是什么。

在我看来,这种情况的发生是因为
文件
是一个生成器。因此,在您第一次迭代
for
循环时的列表理解中,它的内容已经被消耗,因此在随后的迭代中没有更多的项目了

因此,您可能需要从
文件中列出一个列表,首先:尝试将

files=列表(文件)

就在
for
循环之前。

所以你基本上想过滤掉所有具有相同扩展名的文件,对吗@MauroYes,我需要将它们分成不同的列表,这样我就可以根据它们的扩展分批处理它们。为此,我使用了一个字典,但在迭代files对象时遇到了问题。解决方案被钉住了。这确实是问题所在。谢谢你的解释