Python如何从第0个元素而不是第X个元素循环数组?

2024-09-30 22:26:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的for循环

ImgPaths = make_dataset(TestImgPath)
    for i, ImgPath in enumerate(ImgPaths):

其中:

  • TestImgPath是输入图像的路径。键入字符串。就我而言TestImgPath = './TestData/TestWhole'TestDataTestWhole是文件夹
  • ImgPath是指向图像的路径。例如ImgPath = ./TestData/TestWhole\XXXXX.jpg当我打印时。XXXXX在我的情况下是00000到82700
  • ImgPath是一次到达图像的路径。例如ImgPaths = ./TestData/TestWhole\\XXXXX.jpg当我打印时。但是我认为它是一个完整的00000-XXXXX,因为ImgPaths是像上面那样分配的

因此,有82700个文件需要处理,一个文件需要24秒。等待一次全部完成的时间太长了。父文件夹很大,因此我无法将父文件夹复制到10个副本中并执行每个副本。因此,划分for循环可能是一种方法。似乎它不是一个正常的for循环,而是一个数组for循环

那么,如何使数组for循环在某个元素开始和停止?如果我想从11111.jpg开始,停在22222.jpg,怎么做

这是源代码 https://drive.google.com/file/d/1jnE7kSK2eyXEAsTXb_4IctUEbBkZSWJa/view?usp=sharing

多谢各位


Tags: 文件图像路径文件夹formake副本数组
1条回答
网友
1楼 · 发布于 2024-09-30 22:26:42

您可以使用条件语句跳过处理,直到i达到所需的起始编号,然后breaki超过结束编号时执行循环:

for i, ImgPath in enumerate(ImgPaths):
    if i > 22222:
        break
    elif i >= 11111:
        # process ImgPath

或者使用itertools.islice将迭代次数限制在指定范围内:

import itertools
for ImgPath in itertools.islice(ImgPaths, 11111, 22222 + 1):
    # process ImgPath

相关问题 更多 >