12. 逻辑运算与布尔测试

12.1. 逻辑运算

逻辑运算

运算符

描述

and

与,x and y:如果x为False,返回False,否则返回y的 计算值

or

或,x or y:如果x为True,返回True,否则返回y的 计算值

not

非,not x:如果x为True,返回False,否则返回True

1>>> print 'a'<'b' and 'c'
2c
3>>> print 'a'>'b' and 'c'
4False
5
6>>> print 'a'>'b' or 'c'
7c
8>>> print 'a'<'b' or 'c'
9True

12.2. 成员运算

成员运算

运算符

描述

in

如果在指定列表/元组/字符串/字典中找到值,返回True,否则返回False

not in

如果未在指定列表/元组/字符串/字典中找到值,返回True,否则返回False

 1>>> 1 in [1,2,3]
 2True
 3>>> 1 in (1,2)
 4True
 5>>> 'a' in 'abc'
 6True
 7
 8>>> cnt = {'a':1}
 9>>> 'a' in cnt
10True
11>>> {'a':1} in cnt
12TypeError: unhashable type: 'dict'

Note

查找的值必须是可哈希的,也就是不可变类型。

12.3. 布尔测试

下面对象的布尔值都是 False

  • False(布尔类型)

  • None

  • “”(空字符串)

  • [](空列表)

  • {}(空字典)

  • ()(空元组)

  • 所有值为零的数

    • 0(整型)

    • 0.0(浮点型)

    • 0L(长整型)

    • 0.0 + 0.0j(复数)

 1flag = None
 2if not flag:
 3    print "flag is none:", flag
 4    print flag == False
 5
 6flag = {}
 7if not flag:
 8    print "flag is empty:", flag
 9    print flag == False
10flag = {'a':1}
11if flag:
12    print "flag is not empty:", flag
13
14flag = []
15if not flag:
16    print "flag is empty:", flag
17    print flag == False
18flag = [1]
19if flag:
20    print "flag is not empty:", flag
21
22flag = ""
23if not flag:
24    print "flag is empty:", flag
25    print flag == False
26flag = "a"
27if flag:
28    print "flag is not empty:", flag
29
30flag = 0.0
31if not flag:
32    print "flag is zero:", flag
33    print flag == False
34flag = 1
35if flag:
36    print "flag is not empty:", flag

输出结果为:

flag is none: None
False

flag is empty: {}
False
flag is not empty: {'a': 1}

flag is empty: []
False
flag is not empty: [1]

flag is empty:        ## ""
False
flag is not empty: a

flag is zero: 0.0
True                  ## 只有这一个是True:0.0 == False
flag is not empty: 1

Note

布尔值是False,不代表等于False。

零的布尔值是False,同时也等于False。

12.4. any 和 all

x 的任一元素的布尔测试为 Trueany(x) 返回 True ,否则返回 False

x 的所有元素的布尔测试为 Trueall(x) 返回 True ,否则返回 False

 1>>> x = [1, 2, '', 3]
 2>>> all(x)
 3False
 4>>> any(x)
 5True
 6>>> x = [0, 0, 0, 0]
 7>>> any(x)
 8False
 9>>> all([])
10True
11>>> all([[]])
12False

12.5. 参考资料

  1. Python基本数据类型