2016-11-18 128 views
-1

我有一个数组,它有条目(例如,array =([1,2],[2,3],[3,4])),我想循环这些列表和比较具体的项目,看它是否匹配的标准,但我不断收到此错误:“Indexerror:列表索引超出范围”列表索引超出范围? (Python)

这是我的代码:

for i in enumerate(arr): 
     if arr([i][6]) == 0.0: 
      humans= humans+[arr[i,col]] 

我已经检查了例如通过打印数组[1] [6]来打印实际数组,我知道这里有一个值。那为什么它不会循环?

+0

如果你历数(ARR)。Ⅰ型 : 'i'是元组'(指数值)'。你能发布堆栈跟踪吗? –

+0

你对'arr [i,col]'有什么了解?你对“i”和“col”的价值有多了解?请放心,如果python告诉你列表索引超出范围,那就是了。 –

+0

'arr([i] [6])'。你用'[i]'的第7个元素调用'arr',这是一个元素列表。 –

回答

1

你对enumerate()的理解是错误的。它返回每个项目映射到其索引的元组列表。这是因为你的情况下返回值:

>>> list(enumerate(arr)) 
[(0, [1, 2]), (1, [2, 3]), (2, [3, 4])] 

如果想重复使i将值从0到arr长度,你需要使用range()为:

for i in range(len(arr)) 

另外,列表的内容是:

arr = [[1,2],[2,3],[3,4]] 

这是一个3X2的列表,你正在做arr[i][6],它会给IndexError为每个子升长IST是只有两个

+0

我刚试过这个,我仍然在第二行得到同样的错误 – Sam

+0

@Sam:检查我的编辑 –

+0

非常感谢你!成功了! – Sam