我们说我有一个3号的列表
a = ['a', 'b', 'c']
并且我的用户给出了索引位置4.如果索引超出范围,则会出错。在大多数情况下,这是一件好事,但我需要的是,无论列表大小如何(假设为len > 0
),它都会返回一个值。
因此,在上面的示例中,值将是' b'。
'a' = 0
'b' = 1
'c' = 2
'a' = 3
'b' = 4
与反向值相同,如果我给-4。
实现此目的的最佳方法是什么?
答案 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
等等。