二进制
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