使数组索引1而不是索引0

时间:2012-07-30 17:52:58

标签: python

如何在python中使用下标1而不是下标0开始数组?

基本上是在python中解决这个problem

4 个答案:

答案 0 :(得分:9)

如果您真的想这样做,可以创建一个包装列表的类,并将__getitem____setitem__实现为一个。例如:

def __getitem__(self, index):
  return self.list[index-1]

def __setitem__(self, index, value):
  self.list[index-1] = value

但是,要获得Python列表的全部灵活性,您必须实现对切片,删除等的支持。如果您只想要一个简单的列表视图,一次一个项目,这应该这样做为了你。'

有关创建类似于序列或映射的自定义类的详细信息,请参阅Python Documentation for Data Model

答案 1 :(得分:5)

您可以使用enumerate()方法

a = ['a', 'c', 'v', 's']
for i,v in enumerate(a, 1):
    print i, v

1 a
2 c
3 v
4 s

答案 2 :(得分:3)

+1到Max。以下是您可以尝试的其他内容:

只需在列表的索引0处添加None即可。这应该可以为您提供功能。当您将列表传递给MATLAB时,您只需记住剪掉前导None

答案 3 :(得分:0)

您可以使用fidx模块的自定义索引:

import fidx

# create custom type `list1b` from `list`
fidx.add(list, name='list1b')

# add a map for int indexes (i -> i-1)
fidx.list1b.set_index_map(int, lambda _,i: i-1, override=True)

# create your list
b = fidx.list1b([1,2,3])

print(b[1], b[2], b[3]) # (1, 2, 3)