列表索引超出范围

时间:2011-06-11 17:03:02

标签: python list

我已经编写了一个程序,确保每个cookie有超过5个筹码,然后再继续。 但是,行if cookie[i] > 5:似乎有问题,因为它会产生“列表索引超出范围”错误。我认为foo = []创建了一个没有结尾的列表,所以我不明白任何号码在此列表中超出范围的原因。我做错了什么?

cookie = []

...

for i in range(0, 11):
    if cookie[i] > 5:
         break

6 个答案:

答案 0 :(得分:5)

尝试:

len(cookie)

你会看到你是否在其中放入任何大小为0的内容。使用cookie = [],您可以不断向列表添加元素,但它已初始化为空。

答案 1 :(得分:2)

怎么样:

cookies = []

...

for cookie in cookies:
    if cookie > 5:
         break

答案 2 :(得分:2)

你真的没有一个没有结尾的列表,在你的情况下可能只有零。

但是,您可以创建一个包含11个零的列表:

cookies = [0] * 11

如果您在索引处没有放入任何其他内容,则创建一些返回0的内容:

import collections
cookies = collections.defaultdict(int)

请注意,这不是列表而是地图。

答案 3 :(得分:1)

foo = []创建一个列表,而不是没有结尾的列表。任何索引访问都将在空列表中失败。要检查列表的长度,请使用len(mylist)。空列表的长度为0,索引从零开始。所以:

cookie = []
len(cookie) == 0
cookie[0] ## will raise IndexError

cookie.append('something')
len(cookie) == 1
cookie[0] ## will return 'something'

请参阅list docs

答案 4 :(得分:1)

cookie = []创建没有数据的空列表,因此这里没有索引。您需要先向cookie填写一些数据(例如,使用cookie.append(some_data))。

答案 5 :(得分:1)

foo=[]不会创建没有结尾的列表。相反,它会创建一个空列表。

你可以做到

for i in range(0, len(foo)):
    if(cookie[i]>5):
        break

或者你可以做到

for c in cookie:
    if c>5:
        break