Python报错TypeError:列表索引需为整数/切片而非元组,求解决
问题分析与解决
错误原因
你定义的x是Python原生列表,而[:,1]是NumPy数组专属的多维切片语法——原生列表不支持这种元组形式的索引,只能用整数或切片作为索引,所以会触发TypeError: list indices must be integers or slices, not tuple。
解决方案
方案1:用原生Python列表实现需求
遍历x的每个子元素,生成布尔掩码,再通过掩码筛选y的元素:
# 生成掩码:判断每个子列表的第二个元素是否为1 mask = [item[1] == 1 for item in x] # 根据掩码筛选y中对应位置的元素 y_left = [y[i] for i, is_match in enumerate(mask) if is_match]
方案2:转为NumPy数组复用原代码逻辑
如果更习惯NumPy的数组操作,先把x和y转换成NumPy数组,就能直接用你原来的代码:
import numpy as np # 将原生列表转为numpy数组 x_np = np.array(x) y_np = np.array(y) # 原代码逻辑可正常运行 mask = (x_np[:, 1] == 1) y_left = y_np[mask]
内容的提问来源于stack exchange,提问作者Manoj Joshi
相关产品推荐
相关产品推荐

