在 Python2.7 中忽略没有 continue 语句的 IndexError

Posted

技术标签:

【中文标题】在 Python2.7 中忽略没有 continue 语句的 IndexError【英文标题】:Ignore an IndexError in Python2.7 without continue statement 【发布时间】:2018-08-17 10:37:32 【问题描述】:

我在 for 循环中有一个 try 和 except 语句。我正在查看存储在(可能过于复杂)列表中的数据,该列表本身存储在 defaultdict 中。我期望 IndexErrors,但是当它们发生时,我根本不需要比较任何数据,所以我想忽略错误。这是我当前的代码:

for key, list_item in defdict.iteritems():
    if len(list_item) == 2:
        if len(list_item[0][1]) > 1 or len(list_item[1][1]) > 1:
            compare00,compare01=[],[]
            if another_list.__contains__(list_item[0][0]):
                try:
                    for item in defdict.iteritems():
                        if item[1][0][0] == list_item[0][0]:
                            compare00.append(compare_function(item))
                except IndexError:
                    continue
            if another_list.__contains__(list_item[1][0]):
                try:
                    for item in defdict.iteritems():
                        if item[1][1][0] == list_item[1][0]:
                            compare10.append(compare_function(item))
                except IndexError:
                    continue
        print compare00,compare10
        #etc

我已经意识到continue 声明是不正确的。我的if 语句不必是互斥的,因此,既不去循环的下一次迭代(continue)也不离开循环(break)是合适的。没有continue 的空白except IndexError:,是不正确的语法。我应该如何忽略错误?

【问题讨论】:

抱歉,如果不清楚。 “我不想继续前进”是指我想在循环的这次迭代中执行更多代码,因此既不需要 break 也不需要 continue。我已经相应地编辑了问题。 【参考方案1】:

使用pass 语句代替continue 语句

【讨论】:

甚至是任何有效代码但不会评估以更改任何内容 break 会有所帮助 请参阅问题下方的评论 RE:break 这是我需要的答案。我以前只使用pass 作为占位符。没想到这里,但它工作得很好。信息:pass documentation【参考方案2】:

如果您想继续循环,请使用pass 而不是continue。 如果您想停止循环,请使用break 而不是continue

【讨论】:

以上是关于在 Python2.7 中忽略没有 continue 语句的 IndexError的主要内容,如果未能解决你的问题,请参考以下文章

由于 continue 而忽略了数组 for 循环中的基本 else 语句

Python2.7-difflib

Python2.7与3.6的一些区别

为啥'continue'语句忽略'while'循环中的循环计数器增量,而不是'for'循环?

使 continue 语句在 do while 循环中工作

使用continue忽略本次循环剩下语句