Home > OS >  Get python list index out of range
Get python list index out of range

Time:10-29

I'm trying to get the index of list even if the index is larger then then the list size if the index is bigger then the list size so I want to get the index from the start of the list for example if the list size is 5

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

so l[7] should return 3

CodePudding user response:

Your question is not clear:

suppose:

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

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

You can do a forloop to print all the values:

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

Now if you want to plug in large values in x you can use mod operator %

l[x%len(l)]

here x can be any large number.

when x=7:

l[7%len(l)]
#output
3

when x=5:

l[5%len(l)]
#output
1

CodePudding user response:

You'll want to use the % (modulo) operator to handle this type of situation, and I'll assume that you meant l[7] should return 3 (at index 2 in the list). A functional solution:

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

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

An object-oriented solution, defining subclass of list and overriding its __getitem__ method which handles subscript access, i.e. 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

The super().__getitem__ function refers to the builtin list's method, which needs to be called to prevent infinite recursion.

  • Related