相关疑难解决方法(0)

如何在Python中继承和扩展列表对象?

我有兴趣使用python列表对象,但功能稍有改动.特别是,我希望列表是1索引而不是0索引.例如:

>> mylist = MyList()
>> mylist.extend([1,2,3,4,5])
>> print mylist[1]
Run Code Online (Sandbox Code Playgroud)

输出应为:1

但是,当我改变了__getitem__()__setitem__()方法,要做到这一点,我得到一个RuntimeError: maximum recursion depth exceeded错误.我对这些方法进行了很多修改,但这基本上就是我在那里所做的:

class MyList(list):
    def __getitem__(self, key):
        return self[key-1]
    def __setitem__(self, key, item):
        self[key-1] = item
Run Code Online (Sandbox Code Playgroud)

我想问题是它self[key-1]本身正在调用它定义的相同方法.如果是这样,我如何使用list()方法而不是MyList()方法?我尝试使用super[key-1]而不是self[key-1]导致投诉TypeError: 'type' object is unsubscriptable

有任何想法吗?另外,如果你能指出一个很好的教程,那就太好了!

谢谢!

python inheritance list

47
推荐指数
3
解决办法
4万
查看次数

如果异常列表索引超出范围,则将值设为零

我正在用 python 做一些计算,如果它们在列表中,我必须对列表中的项目求和。这是代码:

Ei=-J*S[i][j]*(S[i+1][j]+S[i-1][j]+S[i][j+1]+S[i][j-1])
Run Code Online (Sandbox Code Playgroud)

我想要的是将给出错误的元素的值设为零 list index out of range。有没有办法在不验证和的每个元素是否存在的情况下做到这一点?

提前致谢

编辑

我不希望总和为 0,只希望给出错误的元素

python exception-handling list

3
推荐指数
1
解决办法
1650
查看次数

标签 统计

list ×2

python ×2

exception-handling ×1

inheritance ×1