任何人都可以指出我获得列表的上一个和下一个项目的实用方法.例如:
my_list = [100, 200, 300, 400]
Run Code Online (Sandbox Code Playgroud)
是否有实用的方法来获取上一个和下一个项目(300和100).
我my_list[my_list.index(400) - 1]用来成功获得上一个项目.Python并不介意明显地得到负面索引.但是,如果我尝试my_list[my_list.index(400) + 1]它不喜欢索引大于列表中的项目数.这是有道理的.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
我想我可以使用循环来循环并获得它 - 我只是希望有一个更简单的解决方案.我正在考虑使用iter()但我似乎无法弄清楚是否可以设置索引.
您可以使用modolu运算符围绕列表的边框"循环":
>>> my_list = [100, 200, 300, 400]
>>> val = 400
>>> my_list[(my_list.index(val) + 1) % len(my_list)] # next
100
>>> my_list[(my_list.index(val) - 1) % len(my_list)] # previous
300
Run Code Online (Sandbox Code Playgroud)
一个简单的解决方案是使用modulo
my_list[ (my_list.index(400) + 1) % len(my_list) ]
Run Code Online (Sandbox Code Playgroud)
结果:
>> 100
Run Code Online (Sandbox Code Playgroud)