7

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

基本上是在python中解决这个问题。

4

4 回答 4

12

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

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

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

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

有关创建类似于序列或映射的自定义类的更多信息,请参阅Python 数据模型文档。

于 2012-07-30T17:59:15.503 回答
7

您可以使用 enumerate() 方法

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

1 a
2 c
3 v
4 s
于 2012-07-30T18:44:40.910 回答
6

+1 到最大。这是您可以尝试的其他方法:

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

于 2012-07-30T18:05:09.737 回答
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)
于 2020-10-10T15:13:35.953 回答