在for循环中,检查列表中前一个和下一个的最佳方法是什么?(见下面的代码)
假设我正在编写一个函数来检查每种颜色是否与同一颜色的另一种颜色相邻,例如:

def colorChecker(colorList):
    colors = True
    for i in range(len(colorList)): #No editing this line
        if not ((i > 0 and colorList[i] == colorList[i-1]) or ((i < len(colorList)-1) and colorList[i] == colorList[i+1])):
            colors = False
    return colors

这给了我一个索引越界异常。。。
我试图检查索引是否越界,并在检查colorList[len(colorlist)+1]之前将其从if语句中跳出…但显然这不是正确的方法。你最好怎么写?

最佳答案

最好使用zip

for prev,cur,nxt in zip(colorList, colorList[1:], colorList[2:]):
    if (prev == cur) or (cur == nxt):
         # Do something

关于python - 编写不会超出边界检查范围的if语句的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57342321/

10-16 12:12