二进制
python的bin()函数返回的是符号+'0b'+无符号下的原码,但用x >> i & 1求第i为的二进制表示时,是补码形式。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15bin(5)
Out[2]: '0b101'
bin(-5)
Out[3]: '-0b101'
bin(-7)
Out[4]: '-0b111'
[ 5 >> i & 1 for i in range(8,-1,-1)]
Out[5]: [0, 0, 0, 0, 0, 0, 1, 0, 1]
for x in [-5,-27,7,15]:
print(x,[x >> i & 1 for i in range(8, -1, -1)])
-5 [1, 1, 1, 1, 1, 1, 0, 1, 1]
-27 [1, 1, 1, 1, 0, 0, 1, 0, 1]
7 [0, 0, 0, 0, 0, 0, 1, 1, 1]
15 [0, 0, 0, 0, 0, 1, 1, 1, 1]
any()和all()
说明
any()函数用来判断给定的迭代参数iterable中是否含有True,如果有(只要有一个),则返回True.
函数等价于:1
2
3
4
5def any(iterable):
for element in iterable:
if element:
return True
return False
all()函数用来判断给定的迭代参数iterable中是否全部是是True,如果是,则返回True。
函数等价于:1
2
3
4
5def all(iterable):
for element in iterable:
if not element:
return False
return Trueany():只要有一个True,就返回True;all():全部是True,就返回True。
注意 :空元组、空列表返回值为True,这里要特别注意。
示例
示例来自菜鸟教程。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42>>>any(['a', 'b', 'c', 'd']) # 列表list,元素都不为空或0
True
any(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素
True
any([0, '', False]) # 列表list,元素全为0,'',false
False
any(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0
True
any(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素
True
any((0, '', False)) # 元组tuple,元素全为0,'',false
False
any([]) # 空列表
False
any(()) # 空元组
False
all(['a', 'b', 'c', 'd']) # 列表list,元素都不为空或0
True
all(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素
False
all([0, 1,2, 3]) # 列表list,存在一个为0的元素
False
all(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0
True
all(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素
False
all((0, 1, 2, 3)) # 元组tuple,存在一个为0的元素
False
all([]) # 空列表
True
all(()) # 空元组
True
下面示例来自CSDN。1
2print(any(x**2 == 16 for x in range(10)))
# True