python - Python - 如何从第 0 个元素而不是第 x 个元素循环数组?
问题描述
我有一个for
这样的循环
ImgPaths = make_dataset(TestImgPath)
for i, ImgPath in enumerate(ImgPaths):
其中:
- TestImgPath 是输入图像的路径。键入字符串。就我而言
TestImgPath = './TestData/TestWhole'
。TestData
并且TestWhole
是文件夹。 - ImgPath 是图像的路径。例如
ImgPath = ./TestData/TestWhole\XXXXX.jpg
,当我打印时。在我的情况下,XXXX 是 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
谢谢你。
解决方案
您可以使用条件语句跳过处理,直到i
达到所需的起始编号,然后在超过结束编号break
时循环:i
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
推荐阅读
- jenkins - 将工件从一个 jenkins101 复制到另一个 jenkins102
- python - 将 HEX 字符串转换为 int
- react-native - 如何在本机反应中一次请求多个权限
- c# - 在 ASP.NET Core 中,如何使用 sqlite
- c++ - [[gnu::pure]] 函数属性和线程的优化问题
- arrays - Modelica:在二维数组中添加行和列
- javascript - amcharts 4世界地图工具提示中的交互式内容,不起作用
- qt - QML 添加两个输入并返回结果
- php - 在服务器上为多个用户运行 MySql
- dart - 如何使用 hero 获得相同的页面目标