Python:如何避免';列表分配索引超出范围';

Python:如何避免';列表分配索引超出范围';,python,Python,尝试搜索,但找不到任何内容。我正在寻找最简单的替代品 if myList and len(myList)>4 用短一点的: myList = [1,2,3,4,5] if myList and len(myList)>4: print myList[4], len(myList) 自 做不到这一点。不太清楚被问到了什么,但我冒昧地猜测一下,这是正确的概念 try: myList[4] except IndexError: # handle it 基本

尝试搜索,但找不到任何内容。我正在寻找最简单的替代品

if myList and len(myList)>4
用短一点的:

myList = [1,2,3,4,5]

if myList and len(myList)>4: 
    print myList[4], len(myList)


做不到这一点。

不太清楚被问到了什么,但我冒昧地猜测一下,这是正确的概念

try:
    myList[4]
except IndexError:
    # handle it

基本上,试着用索引4做你想做的事情。如果你做不到,而且这是因为一个
索引器
,如果你的
如果len(myList)>4
失败了,就用你处理它的方式来处理它。

我不太确定要问什么,但我冒昧地猜测这是正确的概念

try:
    myList[4]
except IndexError:
    # handle it
基本上,试着用索引4做你想做的事情。如果你不能,而且是因为一个
索引器
,请按照你的
如果len(myList)>4
失败时的处理方式来处理它。

试试这个

>>> if len(myList)> 4 : print myList[4]
更新

试试这个

>>> if len(myList)> 4 : print myList[4]
更新


您可以尝试扩展内置类型
列表
并覆盖
\uu getitem\uuu()
,以获得您想要的行为

class MyList(list):

    def __getitem__(self, index):
        try:
            return super(MyList, self).__getitem__(index)
        except IndexError:
            return None

mylist = MyList([1,2,3,4,5])
print mylist[4] #prints 5
print mylist[6] is None #prints True

就个人而言,我支持亚当·斯密的建议。

您可以尝试扩展内置类型
列表
并覆盖
\uu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

class MyList(list):

    def __getitem__(self, index):
        try:
            return super(MyList, self).__getitem__(index)
        except IndexError:
            return None

mylist = MyList([1,2,3,4,5])
print mylist[4] #prints 5
print mylist[6] is None #prints True

就我个人而言,我赞成亚当·斯密的建议。

如果伦(myList)>4:
更短(只要
myList
实际上是一个
列表,就相当于
)…通常你可以做
如果伦(myList)>4
。如果您需要
If myList
,很可能是因为您没有在此处显示其他内容。myList可能会以“无”的形式到达。我需要先检查…@Sputnix是否明确
如果myList不是None,len(myList)>4:
坦白地说,我会先测试
None
-ness,然后分别处理这种情况,而不仅仅是
如果len(myList)如果不是,myList也会在空列表中出错,这在我的情况下非常有效。但是谢谢<代码>如果len(myList)>4:
更短(并且只要
myList
实际上是一个
列表,就相当于
)…通常,如果len(myList)>4
,您可以执行
。如果您需要
If myList
,很可能是因为您没有在此处显示其他内容。myList可能会以“无”的形式到达。我需要先检查…@Sputnix是否明确
如果myList不是None,len(myList)>4:
坦白地说,我会先测试
None
-ness,然后分别处理这种情况,而不仅仅是
如果len(myList)如果不是,myList也会在空列表中出错,这在我的情况下非常有效。但是谢谢!这个建议也不错。希望更短!这个建议也不错。希望更短!len(None)抛出TypeError:NoneType类型的对象没有len(),在“现实生活”中,无法预测myList是什么。谢谢!检查无需继续len()否则事情会很快变得一团糟您还应该使用
isinstance(myList,list)
而不是
type(myList)is list
来保留继承。len(None)抛出TypeError:type'NoneType'的对象没有len()。在“真实生活”中,无法预测myList是什么。谢谢!检查无需继续len()否则事情会很快变得一团糟您还应该使用
isinstance(myList,list)
而不是
type(myList)is list
来保留继承。我真的很喜欢您的!谢谢我真的很喜欢你的!谢谢