Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 制作一个列表,返回带有任何索引的结果,尽管;列表超出范围错误“;_Python - Fatal编程技术网

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))]动态调用它。
  • 或者你可以创建一个函数来完成这个任务
两种解决方案

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
以上两个代码片段有效地将循环索引转换为普通列表索引

两种解决方案

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不是为此而设计的。你必须自己编写代码来处理这个问题是的,对不起,我写的时候错了