追加功能无法退出循环

问题描述 投票:1回答:2

我想附加文件,但是Jupiter笔记本只是说文件正在运行,但没有提供错误代码,也从不提供输出。当我尝试停止笔记本电脑时,它只是崩溃了。我的笔记本电脑或功能有问题吗?

我已经在非常简单的代码上尝试过我的代码,例如:

x = [1, 2, 3, 4, 5]

for i in x:
    x.append(i)
print(x)

...但是从不给出输出。

这是我的实际代码:

jpgfiles = [f for f in glob.glob(path + "**/*.jpg", recursive=True)]
pngfiles = [f for f in glob.glob(path + "**/*.png", recursive=True)]

for j in jpgfiles:
    jpgfiles.append(j)
    #print(jpgfiles)

for p in pngfiles:
    pngfiles.append(p)
    #print(pngfiles)

all_files = jpg.files + png.files
#print(all_files)

我想知道这是否是代码问题的原因是,因为我不知道是否在某个无限循环中捕获了文件?应当指出,真正复杂的代码的其他部分仍然可以使用!只是当我使用此功能时,它永远不会停止运行...

python for-loop jupyter-notebook append
2个回答
0
投票

如果您要添加

print(x)

对于您的for循环,您会看到创建了一个无限循环。您在循环遍历数组本身时增加了正在处理的数组。这通常是非常糟糕的做法。您应该克隆该数组并将第一个数组中的元素添加到第二个数组中,同时循环遍历第一个。


1
投票

您可以像这样合并两个列表:

jpgfiles = [f for f in glob.glob(path + "**/*.jpg", recursive=True)]
pngfiles = [f for f in glob.glob(path + "**/*.png", recursive=True)]

all_files = [*jpgfiles, *pngfiles]
print(all_files)
© www.soinside.com 2019 - 2024. All rights reserved.