Python 制作一个列表,返回带有任何索引的结果,尽管;列表超出范围错误“;
我正在寻找一些简单而巧妙的解决方案,防止列表出现“列表超出范围错误” 比如说Python 制作一个列表,返回带有任何索引的结果,尽管;列表超出范围错误“;,python,Python,我正在寻找一些简单而巧妙的解决方案,防止列表出现“列表超出范围错误” 比如说 l = [1, 2, 3] l[3] # 1, first element of the list l[-4] # 3, last element of the list 我想那一定是一门课。当我在标准模块中找不到它时,我感到非常惊讶。对于itertools来说,有一个循环,但这并不是我想要的,你可以编写一个函数来完成它 >>> def my_index(l, idx): ... ret
l = [1, 2, 3]
l[3] # 1, first element of the list
l[-4] # 3, last element of the list
我想那一定是一门课。当我在标准模块中找不到它时,我感到非常惊讶。对于itertools来说,有一个循环,但这并不是我想要的,你可以编写一个函数来完成它
>>> def my_index(l, idx):
... return l[idx % len(l)] if l else None
...
>>> my_index(l,-4)
3
>>> my_index(l,3)
1
您可以编写一个函数来为您执行此操作
>>> def my_index(l, idx):
... return l[idx % len(l)] if l else None
...
>>> my_index(l,-4)
3
>>> my_index(l,3)
1
- 您可以使用
yourlist[INDEX%(len(yourlist))]动态调用它。
- 或者你可以创建一个函数来完成这个任务
- 您可以使用
yourlist[INDEX%(len(yourlist))]动态调用它。
- 或者你可以创建一个函数来完成这个任务
def my_getitem(l, key):
return l[key % len(l)]
l = [1, 2, 3]
my_getitem(l, 3) # 1
2) 使用list的自定义子类重载下标运算符
类MyList(列表):
def _u获取项目(自身,密钥):
返回super()。\uuuu getitem\uuuuu(键%len(self))
l=MyList([1,2,3])
l[3]#1
以上两个代码片段有效地将循环索引转换为普通列表索引 两种解决方案
1) 使用代理函数访问列表
def my_getitem(l, key):
return l[key % len(l)]
l = [1, 2, 3]
my_getitem(l, 3) # 1
2) 使用list的自定义子类重载下标运算符
类MyList(列表):
def _u获取项目(自身,密钥):
返回super()。\uuuu getitem\uuuuu(键%len(self))
l=MyList([1,2,3])
l[3]#1
以上两个代码片段有效地将循环索引转换为普通列表索引 您上次的编辑使您的意思变得明确,这不是完全明确的,但可以猜测,几乎不可能理解…没有办法,
list
API不是为此而设计的。你必须自己编写代码来处理这个问题是的,很抱歉,我写的时候错了。你上一次编辑的意思是什么,这不是完全明确的,但可以猜测,几乎不可能理解……没有办法,列表
API不是为此而设计的。你必须自己编写代码来处理这个问题是的,对不起,我写的时候错了