Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于if语句if not thing在后面指定的问题?_Python_If Statement_Scope - Fatal编程技术网

Python 关于if语句if not thing在后面指定的问题?

Python 关于if语句if not thing在后面指定的问题?,python,if-statement,scope,Python,If Statement,Scope,我想问三件事。首先,对于第10行,这是“else”语句吗?事实似乎并非如此——如果不是,它的作用是什么 第二,对于第8行,我们是说如果'val'在列表字符集中,那么返回False吗?一般来说,我们是这样写的吗 最后,对于第5行,[False for uuu in range(128)]做什么?谢谢 def unique(string): if len(string) > 128: return False char_set = [False for _

我想问三件事。首先,对于第10行,这是“else”语句吗?事实似乎并非如此——如果不是,它的作用是什么

第二,对于第8行,我们是说如果'val'在列表字符集中,那么返回False吗?一般来说,我们是这样写的吗

最后,对于第5行,[False for uuu 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 uuu in range(128)]
    创建了一个包含128个
    False
    值的列表。这是列表理解,可重写如下:
char\u set=[]
对于范围内的uu(128):
char_set.append(False)
表示从迭代器(
范围
对象)读取值,然后丢弃它

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

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

      • 第5行,
        [False for uuu in range(128)]
        创建了一个包含128个
        False
        值的列表。这是列表理解,可重写如下:
      char\u set=[]
      对于范围内的uu(128):
      char_set.append(False)
      
      表示从迭代器(
      范围
      对象)读取值,然后丢弃它

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

      [范围内(128)为假]
      在本例中可以简化为
      [假]*128
      @Hadrian在本例中是的,因为
      bool
      是不可变的,但在其他情况下会发生别名。此外
      [范围内(128)为假]
      可以简化为
      [假]*128
      @Hadrian在本例中是的,因为
      bool
      是不可变的,但在其他情况下会发生别名。