为了账号安全,请及时绑定邮箱和手机立即绑定

python中的列表从0开始索引

python中的列表从0开始索引

明月笑刀无情 2021-06-03 17:37:13
我想从列表的 1 而不是 0 开始索引,以便它有助于进一步编码。有没有办法做到这一点?我看到很多帖子都对数据框做同样的事情,但对列表却没有。
查看完整描述

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来表示列表中的最后一项。


查看完整回答
反对 回复 2021-06-16
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

首先,习惯索引 0。

但是要回答您的问题,List如果您想要完全支持,您可以继承该类并覆盖每个方法以从 0 开始......虽然不明智。


查看完整回答
反对 回复 2021-06-16
  • 2 回答
  • 0 关注
  • 389 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号