繁体   English   中英

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

[英]Python - how to for loop an array from not 0th but xth element?

我有一个像这样的for循环

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

其中:

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

因此,有 82700 个文件要处理,一个文件需要 24 秒。 等待它一次完成太长了。 父文件夹很大,因此我无法将父文件夹复制为 10 个副本并执行每个副本。 所以划分那个for循环可能是go的方法。 似乎它不是普通for循环,而是一个数组for循环。

那么,如何让一个数组for循环在某个元素处开始和停止呢? 如果我想从 11111.jpg 开始,到 22222.jpg 停止,怎么办?

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

谢谢你。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM