关于if statement if not thing is specified after it的问题?

Question about if statement if not thing is specified after it?

我想问三件事。首先,对于第 10 行,这是一个 'else' 语句吗?好像不是这样,如果不是,它有什么作用?

其次,对于第 8 行,我们是说如果 'val' 在列表 char_set 中,那么 return 是假的吗?一般来说,我们会这样写吗?

最后,对于第 5 行,[False for _ in range(128)] 的作用是什么?谢谢!

 def unique(string):
    if len(string) > 128:
        return False

    char_set = [False for _ in range(128)]
    for char in string:
        val = ord(char)                 
        if char_set[val]:          
            return False
        char_set[val] = True      

    return True

让我们按(代码执行的)时间顺序回答这个问题:

  • 第 5 行,[False for _ in range(128)] 创建了一个包含 128 个 False 值的列表。这是列表理解,可以改写如下:
char_set = []
for _ in range(128):
    char_set.append(False)

_表示从迭代器(range对象)中读取值,并丢弃它。

  • 第8行:val是字符的ord,表示数字。 char_set[val] 为我们提供了索引 val 处的元素,它被初始化为 False。在您的代码中(特别是第 10 行),这可能会被覆盖为 True。此处的 if 语句检查该索引中的值是否为 True.
  • 第 10 行:它不是 else 语句,尽管在本例中它的作用相同。在这段代码中,如果第 8 行的条件不满足,那么代码执行流程会像第 9 行一样跳过,“掉线”到第 10 行,然后继续。如果第 8 行中的条件满足(即 char_set[val]True),则执行第 9 行,并且 return 语句突然结束函数调用,同时返回 False 作为它的结果。