【问题标题】:Why does enumerate NOT give me an index error?为什么枚举不给我一个索引错误?
【发布时间】:2020-05-11 09:05:16
【问题描述】:

Python 没有给我这个 for 循环的索引错误:

s = ['one', 'two']

for index, char in enumerate(s):
    if s[index - 1] != ' ' or s[index + 1212] != ' ':
        pass

但是交换条件后它确实给了我一个索引错误:

s = ['one', 'two']

for index, char in enumerate(s):
    if s[index + 1212] != ' ' or s[index - 1] != ' ':
        pass

有人愿意解释一下吗?

【问题讨论】:

标签: python-3.x for-loop enumerate


【解决方案1】:

在包括 Python 在内的大多数编程语言中,布尔表达式一次只计算一个部分,一旦其中一个部分为假,计算就会停止。这称为“short-circuit evaluation”或“最小评估”。

在您的情况下,如果 s[index - 1] != ' ' 为 false,则根本不会评估 s[index + 1212] != ' ',这反过来也不会引发错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多