好的,所以这实际上是两个问题。首先,我想知道是否有办法测试列表的索引是否存在。例如,我想在每次给定条件为真时使用类似的代码递增 list[i] list[i] += 1
,但如果索引不存在,则会出现错误。所以我想设置一个测试,在出现错误的情况下,执行类似list.append(1)
. 什么代码可以完成这样的测试条件?If list[i]
引发错误。
作为后续问题,一旦建立测试,除了使用上述附加方法之外,还有其他方法可以创建列表索引吗?
好的,所以这实际上是两个问题。首先,我想知道是否有办法测试列表的索引是否存在。例如,我想在每次给定条件为真时使用类似的代码递增 list[i] list[i] += 1
,但如果索引不存在,则会出现错误。所以我想设置一个测试,在出现错误的情况下,执行类似list.append(1)
. 什么代码可以完成这样的测试条件?If list[i]
引发错误。
作为后续问题,一旦建立测试,除了使用上述附加方法之外,还有其他方法可以创建列表索引吗?
听起来你真正想要的是一个defaultdict
——与其说是一个列表,不如说是一个整数到某种你看到它们的次数的映射。
(这非常接近 perl 中 autovivificaiton 的概念,如果你以前用过的话)
此代码将起作用:
from collections import defaultdict
# don't name a variable 'list'; you'll end up hiding the actual list type
my_List = defaultdict(int) # create a mapping, elements will default to 0
然后你可以使用
my_list[i] += 1
对于 的任何值i
。如果它以前见过,那么它将增加它。如果不是,那么my_list[i]
将得到一个默认值 0,该值将立即增加到 1。
测试索引是否存在:
if 0 <= i < len(list): ... do something with list[i] ...
else: ... i is out of bounds, do something else ...
在这种情况下,您最好使用 adict
而不是数组,并且可能使用defaultdict
.
除了使用上述附加方法之外,还有什么方法可以创建列表索引?
是的,Range
方法。
indexList = range(len(nameList)) # create a list of indexes
print "Index list:", indexList
for i in indexList: # Pick items out of the list
print ">>>", nameList[i]
在 python中测试null
变量的最佳方法是......(非常重要的None
是大写而不是小写)。
if list[i] != None: #check if there is something there
print "Oh hello... " + list[i]
else:
print "Nothing to see here, move along"
首先,我想知道是否有办法测试列表的索引是否存在。
您可以利用列表索引是数字的事实(从 0 开始),并在修改列表时重新计算:
if i <= len(mylist):
print mylist[i]
另一种避免的IndexError
方法是抓住它:
try:
mylist[i] += 1
except IndexError:
print "No item at ", i
除了使用上述附加方法之外,还有什么方法可以创建列表索引?
您不会“创建”索引,它会在您从列表中添加或删除项目时自动设置。因此,创建索引的唯一方法是将项目附加到列表中。
如果您不断地“预先设置”您的列表,通常这是一个糟糕设计的标志——也就是说,您设置了一个具有默认值的大列表,然后逐步执行。