这是我的难题。想象一下你有一个循环和一个包含100个成员的列表,如下所示:
myList=range(100)
for i in range(100):
print(myList[i])
print(myList[i+5])
print(myList[i-5])
如何防止myList的索引超出列表的长度或低于0?
例如,如果循环中的索引是99,那么:
print(myList[i+5])
会返回索引错误。
澄清一下,我的意思是,我可以找出[i + 5],好像列表在循环中一样。
所以,如果你想象索引是99(再次),我想转到第4个索引(在添加5并循环回到开头之后)。
答案 0 :(得分:2)
直接的方式是从5开始并在列表的长度结束 - 5,像这样
for i in range(5, len(myList) - 5):
print(myList[i])
print(myList[i+5])
print(myList[i-5])
或者您可以在访问该位置的元素之前确保索引有效,例如
for i in range(100):
print(myList[i])
if i + 5 < len(myList):
print(myList[i+5])
if i - 5 >= 0:
print(myList[i-5])
编辑:如果您想要回头并从另一端开始,一旦结束,那么您可以使用模运算符,就像这样
for i in range(100):
print(myList[i])
print(myList[(i + 5) % len(myList)])
print(myList[(i - 5) % len(myList)])
答案 1 :(得分:1)
您还可以定义一个&#34; safe&#34; print
功能:
编辑:澄清后,我将答案修改为循环
def safe_print(mylist, myindex):
print mylist[myindex % len(mylist)]
myList=range(100)
for i in range(100):
safe_print(myList, i)
safe_print(myList, i+5)
safe_print(myList, i-5)