Python 感知器示例中的列表索引超出范围
我有一段代码,目的是根据是否等于Python 感知器示例中的列表索引超出范围,python,arrays,list,machine-learning,Python,Arrays,List,Machine Learning,我有一段代码,目的是根据是否等于Iris versicolor,将2D数组的单元格值更改为1或0 for row in data: if (row[4] == "Iris-versicolor"): row[4] == 1 else: row[4] == 0 问题是它在if语句的行上给了我一个错误,它说“indexer-ror:list-index-out-range”。我理解错误(我想)是说我试图访问一个不存在的单元格,但我已经检查了,我的数据
Iris versicolor
,将2D数组的单元格值更改为1或0
for row in data:
if (row[4] == "Iris-versicolor"):
row[4] == 1
else:
row[4] == 0
问题是它在if语句的行上给了我一个错误,它说“indexer-ror:list-index-out-range”
。我理解错误(我想)是说我试图访问一个不存在的单元格,但我已经检查了,我的数据数组确实有第5列(索引为4),我看不出错误可能来自哪里
非常感谢您的帮助
明杜
编辑:这是我正在使用的数据库的链接。
这是众所周知的。尝试改变
row[4] == 1
到
如果您的数据是列表列表,则行[4]=0
for row in data:
if len(row) >= 4:
if (row[4] == "Iris-versicolor"):
row[4] = 1
else:
row[4] = 0
在访问该行之前,请检查该行是否至少包含5个元素。您还可以发布其他相关代码吗?您可以分享您的
数据吗?@23k我不这么认为,我可以发布解析来自.csv文件的数据的代码,但我通过在出现错误之前打印数据数组来检查解析过程中没有出现任何错误,并且一切都符合我的要求。如果您认为您的行的值为#4,而Python没有,那么她是对的,而您是错的。;-)在if之前添加print(len(row),repr(row))
,您将看到发生了什么。行是列表还是您打算替换dataNice catch中的第5项!我没有注意到那个愚蠢的错误。不幸的是它没有解决我的问题。我的错误出现在我提供的代码片段的第2行。您以前是否尝试过打印所有数据<代码>对于数据中的行:打印行[0]打印行[1]打印行[2]打印行[3]打印行[4]
for row in data:
if len(row) >= 4:
if (row[4] == "Iris-versicolor"):
row[4] = 1
else:
row[4] = 0