如何在python中使用下标1而不是下标0开始数组?
基本上是在python中解决这个problem。
答案 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)