2 回答

TA贡献2012条经验 获得超12个赞
您可以子类化list和覆盖涉及索引的方法:
class List(list):
def __getitem__(self, i):
return super().__getitem__(i - 1 if isinstance(i, int) else slice(i.start and i.start - 1, i.stop and i.stop - 1, i.step))
def insert(self, i, x):
super().insert(i - 1, x)
def pop(self, i=0):
return super().pop(i - 1)
def index(self, x, start=1, end=0):
return super().index(x, start - 1, end - 1) + 1
以便:
a = List((5, 3, 6, 2, 7, 1))
print(a[1])
print(a[0])
print(a[2:])
print(a[:3])
print(a[2:5:2])
a.insert(2, 4)
print(a)
print(a.pop(2))
print(a)
print(a.index(3, 2))
会输出:
5
1
[3, 6, 2, 7, 1]
[5, 3]
[3, 2]
[5, 4, 3, 6, 2, 7, 1]
4
[5, 3, 6, 2, 7, 1]
2
请注意,索引1现在表示第一项,索引0现在将代替索引-1来表示列表中的最后一项。
添加回答
举报