是否有一个可以替换try的单线程,除了在此代码中?
在列表中查找变量然后返回下一个索引,如果索引超出范围,则返回第一个索引。
def cycle_my_list(my_var):
my_list = ['cleaner', 'list', 'cycle']
try:
return my_list[my_list.index(my_var) + 1]
except IndexError:
return my_list[0]
预期结果:
>>> cycle_my_list('list')
'cycle'
>>> cycle_my_list('cycle')
'cleaner'
答案 0 :(得分:7)
使用模%
运算符
my_list = ['cleaner', 'list', 'cycle']
return my_list[(my_list.index(my_var) + 1) % len(my_list)]
答案 1 :(得分:2)
这既适用于项目是否在列表中,也适用于单行内容!
return my_list[my_list.index(my_var) + 1] if my_var in my_list and my_list.index(my_var)+1<len(my_list) else my_list[0]
更新:这可能更具可读性,因为Sasha Tsukanov建议:
return my_list[(my_list.index(my_var) + 1) % 3] if my_var in my_list else my_list[0]