以下操作应该有效,并删除不必要的导入:def checkio(data):
return len(data) >= 10 and any(char.isdigit() for char in data) and any(char.islower() for char in data) and any(char.isupper() for char in data)
默认情况下,可以迭代字符串,每个字符串都有isdigit、islower等。。。可以使用的方法。如果传递给它的iterable返回的任何值为True,any()方法返回True,something(value) for value in iterable语法创建一个生成器表达式,该表达式迭代字符串的每个字符并检查它是否是数字/小写/大写字符。在
基准时间,用我糟糕的基准代码(但它似乎能起到作用):
^{pr2}$
结果,在我运行Windows7和Python3.4.x的低端平板电脑上(运行两次以确定):$ python pass.py
6.333611011505127 # Shashank
9.625216960906982 # Kasra
11.450419902801514 # Andrey Sabitov
8.36161494255066 # Me
但是,如果输入1XYZXYZXYZ(长度和数字都很好,但都是大写),某些解决方案无法提前停止:7.456813097000122 # Shashank
9.328815937042236 # Kasra
11.169620037078857 # Andrey Sabitov
6.349210977554321 # Me
请注意,这些基准并没有考虑最终的编辑。我建议您使用最新的答案在自己的机器上运行基准测试。随时更新这篇文章与新的结果。在