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