在Python列表中做什么功能?
问题描述:
char_set = [False for _ in range(128)]
for char in string:
val = ord(char)
if char_set[val]:
# Char already found in string
return False
char_set[val] = True
我试图破译这段代码,但不明白char_set在做什么?列表中的部分令人困惑。在Python列表中做什么功能?
答
[False for _ in range(128)]
是一个列表理解,将返回一列128 False
s。换句话说,char_set
将是[False, False, ...]
与128 False
。 _
表示一次性值(由range()
函数创建的值,但程序不需要执行任何操作,在这种情况下,_
是代表range()
函数的迭代次数的数字(即0
,1
,2
等)
注意:当初始化多个相同不可变对象的'list'多次时,执行'char_set = [False] * 128'会更快/更简单。 _immutable_对象的列表('bool',numerics,'tuple','frozenset','str','bytes',你有什么),不要为可变对象做这件事,因为你最终会一堆对同一个可变对象的引用,这很少是你想要的(改变其中的一个)。 – ShadowRanger