获取的python列表索引超出范围

abithluo  于 2022-10-30  发布在  Python
关注(0)|答案(2)|浏览(209)

我试图创建一个溢出的pythonic list,这意味着如果我试图得到list的索引,即使索引大于list的大小。
如果索引大于列表的大小,我想从列表的开头开始获取索引。
例如,如果列表大小为5

l = [1,2,3,4,5]

因此l[7]应返回3 [索引2]
谢谢你!

osh3o9ms

osh3o9ms1#

您将需要使用%(模)运算符来处理这种情况,我将假设您的意思是l[7]应该返回3(在列表中的索引2处)。

def overflow_index(l, idx):
    return l[idx % len(l)]

L = [1, 2, 3, 4, 5]
print(overflow_index(L, 7))  # Output: 3

一个面向对象的解决方案,定义list的子类并覆盖其处理下标访问的__getitem__方法,即l[7]

class OverflowList(list):
    def __getitem__(self, idx):
        return super().__getitem__(idx % len(self))

OL = OverflowList([1, 2, 3, 4, 5])
print(OL[7])  # Output: 3

super().__getitem__函数引用了内置的list的方法,需要调用该方法来防止无限递归。

o3imoua4

o3imoua42#

你的问题不清楚:
假设:

l = [1,2,3,4,5]

l[0] is 1
l[1] is 2
and so on...

您可以执行forloop来打印所有值:

for x in range(len(l)):
   print(l[x])

现在,如果您想在x中插入较大的值,则可以使用mod operator %

l[x%len(l)]

这里x可以是任意大的数。

when x=7:

l[7%len(l)]

# output

3

when x=5:

l[5%len(l)]

# output

1

相关问题