You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历字符串数组嵌套循环报错:TypeError问题求助

解决列表索引类型错误(TypeError: list indices must be integers or slices, not str)

我来帮你搞定这个错误!你遇到的问题出在for循环的遍历方式上,咱们一步步拆解分析:

首先看你代码里的循环逻辑:

arrayOfPhotos = ["1.jpg", "2.jpg", "3.jpg", "4.jpg"]
for name in arrayOfPhotos:
    detections = detector.detectObjectsFromImage(input_image=arrayOfPhotos[name], output_image_path="holo3-detected.jpg")

这里的for name in arrayOfPhotos是直接遍历数组里的每一个元素,也就是说name的值就是数组里的字符串(比如第一轮循环时name是"1.jpg",第二轮是"2.jpg")。但你接下来用arrayOfPhotos[name]去“再次取元素”,这就犯了一个典型错误——列表的索引必须是整数或者切片,不能是字符串,所以才会抛出这个报错:

Traceback (most recent call last):
File "dTEST.py", line 13, in
detections = detector.detectObjectsFromImage(input_image=arrayOfPhotos[name], output_image_path="holo3-detected.jpg")
TypeError: list indices must be integers or slices, not str

修正方案

你根本不需要用索引去“二次获取”元素,因为name已经是你要的文件名了!直接把代码改成这样:

arrayOfPhotos = ["1.jpg", "2.jpg", "3.jpg", "4.jpg"]
for name in arrayOfPhotos:
    # 直接用name作为input_image的参数值
    detections = detector.detectObjectsFromImage(input_image=name, output_image_path="holo3-detected.jpg")
    for detection in detections:
        # 同样直接用name打印结果
        print(name, " : ", detection["percentage_probability"])

如果之后你需要用到数组的索引(比如记录是第几张图片),可以用enumerate来同时遍历索引和元素,示例如下:

arrayOfPhotos = ["1.jpg", "2.jpg", "3.jpg", "4.jpg"]
for idx, name in enumerate(arrayOfPhotos):
    print(f"正在处理第{idx+1}张图片:{name}")
    detections = detector.detectObjectsFromImage(input_image=name, output_image_path="holo3-detected.jpg")
    for detection in detections:
        print(name, " : ", detection["percentage_probability"])

这样修改后,就不会再触发索引类型错误了,程序应该能正常遍历每张图片进行检测~

内容的提问来源于stack exchange,提问作者refaeldimri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:17:52