the*_*eye 32
你只需要检查你想要的索引是否0在列表的范围和长度,如下所示
if 0 <= index < len(list):
Run Code Online (Sandbox Code Playgroud)
它实际上是内部评估的
if (0 <= index) and (index < len(list)):
Run Code Online (Sandbox Code Playgroud)
因此,该条件检查索引是否在[0,列表长度]范围内.
注意: Python支持负索引.引用Python 文档,
如果
i或j为负数,则索引相对于字符串的结尾:len(s) + i或者len(s) + j被替换.但请注意-0仍为0.
这意味着无论何时使用负索引,该值都将添加到列表的长度,并将使用结果.所以,list[-1]会给你元素list[-1 + len(list)].
因此,如果您想允许负索引,那么您只需检查索引是否不超过列表的长度,就像这样
if index < len(list):
Run Code Online (Sandbox Code Playgroud)
除此之外IndexError,另一种方法是这样做
a = []
try:
a[0]
except IndexError:
return False
return True
Run Code Online (Sandbox Code Playgroud)
当您尝试访问无效索引处的元素时,IndexError会引发a.所以,这种方法有效.
注意:您在问题中提到的方法存在问题.
if not mylist[1]:
Run Code Online (Sandbox Code Playgroud)
假设1是一个有效的索引mylist,如果它返回一个Falsy值.然后not将否定它,所以if条件将被评估为Truthy.因此,False即使元素实际存在于列表中,它也会返回.
在EAFP风格的Python中:
try:
mylist[1]
except IndexError:
print "Index doesn't exist!"
Run Code Online (Sandbox Code Playgroud)
如果是整数索引列表,我只会
if 1 < len(mylist):
...
Run Code Online (Sandbox Code Playgroud)
对于字典,您当然可以
if key in mydict:
...
Run Code Online (Sandbox Code Playgroud)