索引列表,无论大小

时间:2018-01-12 19:02:15

标签: python python-3.x list

我们说我有一个3号的列表

a = ['a', 'b', 'c']

并且我的用户给出了索引位置4.如果索引超出范围,则会出错。在大多数情况下,这是一件好事,但我需要的是,无论列表大小如何(假设为len > 0),它都会返回一个值。

因此,在上面的示例中,值将是' b'。

'a' = 0
'b' = 1
'c' = 2
'a' = 3
'b' = 4

与反向值相同,如果我给-4。

实现此目的的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

正如Coldspeed所指出的模运算符是正确的工具,它为你提供了整数除法的其余部分 - 如果你使用

number % len(list)  

它只会为您提供有效的索引。 0如果它除了没有休息或高达len(列表)-1 - 完全匹配列表中可用的索引。

对于

data = ['a','b','c']

for n in range(-5,6):
    print(n, '-->', data[n % len(data)])

输出:

-4 --> c
-3 --> a
-2 --> b
-1 --> c
0 --> a
1 --> b
2 --> c
3 --> a
4 --> b
5 --> c

等等。