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

Python 混合类型列表收集数值元素索引的代码异常问题

现有代码存在的问题
  • 索引获取逻辑存在本质缺陷:代码遍历列表拿到元素后,调用types_list.index(i)来获取元素位置,但Python列表的index()方法天生只会返回列表中第一个和目标值匹配的元素索引,这就导致列表后面再出现int、float类型的元素时,查到的永远是第一次出现的那个位置,根本不是当前遍历到的元素的真实索引,和你观察到的“后续int返回首个int索引、后续float返回首个float索引”的现象完全吻合。
  • 存在未定义的变量引用:往numeric_indices追加内容时,代码写的是numeric_indices.append(myindex),但myindex这个变量从来没有被赋值过,运行到这一步会直接抛出NameError,根本走不到收集索引的环节。
  • 缺少必要的模块导入:代码中使用了datetime.datetime类型,但没有提前导入datetime模块,运行时会直接报模块不存在的错误。
正确实现方案

要拿到所有符合条件的元素索引,不需要用index()反查位置,直接在遍历的时候同步携带元素位置即可:使用Python内置的enumerate()方法遍历列表,同时拿到每个元素的原生索引和元素本身,判断类型匹配时,直接把当前拿到的真实索引存入列表就行。
示例可运行代码如下:

import datetime

types_list = [str, int, float, datetime.datetime, int, int]    
numeric_indices = [] 

# 同时获取元素索引和对应的类型值
for idx, col_type in enumerate(types_list):
    # 判断当前类型是否为int或float数值类型
    if col_type in (int, float):
        print(idx)
        numeric_indices.append(idx)

运行上述代码后,最终得到的numeric_indices值为[1, 2, 4, 5],完全匹配收集所有int、float类型元素索引的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 16:06:04