假设我们要检查一个 list
中是否有奇数。最直接的方法是:
def has_odd(L):
for v in L:
if v % 2 == 1:
return True
return False
has_odd
函数检查list
中是否有奇数,一旦找到奇数就返回True
。但这看起来有点啰嗦。使用reduce
更简洁的方法如下:
reduce(lambda res, v: res or bool(v), L, False)
但这样做会遍历所有的元素,是不必要的,因为一旦找到一个奇数,结果肯定是 True
。
那么,还有其他方法可以实现吗?
any(int(digit) % 2 for digit in str(number))
的意思是在一个数字的每一位上,将其转换成字符串,然后逐一判断是否为奇数。如果至少有一位是奇数,则返回 True;否则返回 False。 - Łukasz RogalskiL
是一个序列,正确的形式应该是any(number % 2 for number in sequence)
。我不知何故误读了一个问题,认为您正在检查列表中数字的位数。 - Łukasz Rogalski