Python 列表索引超出范围

Python 列表索引超出范围,python,list,Python,List,我已经编写了一个程序,确保每个cookie在继续之前有5个以上的芯片。 但是,如果cookie[i]>5:行出现问题,因为它会产生“列表索引超出范围”错误。我以为foo=[]创建了一个没有结尾的列表,所以我不明白为什么任何数字都超出了这个列表的范围。我做错了什么 cookie = [] ... for i in range(0, 11): if cookie[i] > 5: break foo=[]创建一个空列表,而不是一个没有结尾的列表。对于空列表,任何索

我已经编写了一个程序,确保每个cookie在继续之前有5个以上的芯片。 但是,如果cookie[i]>5:行出现问题,因为它会产生“列表索引超出范围”错误。我以为
foo=[]
创建了一个没有结尾的列表,所以我不明白为什么任何数字都超出了这个列表的范围。我做错了什么

cookie = []

...

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

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

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

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

请参阅

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

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

你可以

for i in range(0, len(foo)):
    if(cookie[i]>5):
        break
for c in cookie:
    if c>5:
        break
或者你也可以

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

你会看到如果你没有在里面放任何东西,它会是0号的。使用
cookie=[]
可以连续向列表中添加元素,但列表初始化为空。

如何:

cookies = []

...

for cookie in cookies:
    if cookie > 5:
         break

你不可能有一个没有结尾的列表,在你的例子中大概只有零

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

cookies = [0] * 11
或者创建返回
0
的内容,如果您在索引中访问该内容,但没有在索引中放入任何其他内容:

import collections
cookies = collections.defaultdict(int)
请注意,这不是一个列表,而是一个映射