Python中all(bit in '01' for bit in binary_string)代码行工作原理咨询
解析
if all(bit in '01' for bit in binary_string):的工作原理 这行代码的核心就是检查输入的字符串binary_string里的每一个字符,是不是只有0或者1,只有所有字符都符合要求时,条件才成立。拆解开看分成两部分:
1. 生成器表达式:bit in '01' for bit in binary_string
- 它会逐个遍历
binary_string里的每一个字符,把每个字符临时存到变量bit里 - 对每个
bit做判断:这个字符是不是包含在字符串'01'里——说白了就是判断这个字符是'0'还是'1' - 每判断一个字符,就生成一个布尔值(符合要求是
True,不符合是False)。比如输入'10a1',会依次生成True、True、False、True
2. all()函数的作用
all()会接收上面生成的一串布尔值,然后检查里面所有值是不是全为True- 它是短路求值的:只要碰到第一个
False,就立刻停止遍历剩下的字符,直接返回False;只有所有布尔值都是True时,才返回True
举两个实际例子:
- 当
binary_string = '11010':每个字符都是0或1,生成器全输出True,all()返回True,条件成立 - 当
binary_string = '1020':第三个字符是'2','2' in '01'得到False,all()碰到这个False就直接返回False,条件不成立
内容的提问来源于stack exchange,提问作者Omar Azzam
相关产品推荐
相关产品推荐

