Python 关于if语句if not thing在后面指定的问题?
我想问三件事。首先,对于第10行,这是“else”语句吗?事实似乎并非如此——如果不是,它的作用是什么 第二,对于第8行,我们是说如果'val'在列表字符集中,那么返回False吗?一般来说,我们是这样写的吗 最后,对于第5行,[False for uuu in range(128)]做什么?谢谢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 _
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行,
创建了一个包含128个[False for uuu in range(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
是不可变的,但在其他情况下会发生别名。