在一个练习中,必须编写一个函数,将字符串作为输入,如果字符串只包含单词“racecar”一次或多次,而没有前导和尾随空格,并且最多有一个空格分隔单词,则返回“Valid”。否则返回“无效”。你知道吗
我写了下面的函数,我认为是正确的。你知道吗
def is_valid(s):
match = re.match(r'^racecar(\sracecar)*$', s)
return 'Valid' if match != None else 'Not valid'
在解决方案中,他们采用了一种我从未见过的不同方法。return语句中使用的下列语法的名称是什么?你知道吗
def is_valid(s):
l = s.split(' ')
return ['Not valid', 'Valid'][all(s == 'racecar' for s in l)]
['Not valid', 'Valid']
是一个列表如果
l
中的所有元素都是'racecar'
,则all(s == 'racecar' for s in l)
是True
,否则False
。由于bool
是int
(其中True -> 1, False -> 0
)的子类,因此可以使用此表达式索引到双元素列表中。你知道吗因此相当于
不过,我不会在“真正的”代码中使用它,因为它可能会使您或您的同事在以后阅读时感到困惑。另外,正如melpomene在注释中指出的,这个版本确实接受空字符串作为有效字符串。但您可以通过添加支票来解决此问题:
相关问题 更多 >
编程相关推荐