异或运算
位运算中的异或运算 XOR有以下几个特点:
一个数和 0 做 XOR 运算等于本身:a⊕0 = a
一个数和其本身做 XOR 运算等于 0:a⊕a = 0
XOR 运算满足交换律和结合律:a⊕b⊕a = (a⊕a)⊕b = 0⊕b = b
补充:python整数类型的按位运算
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SY2YDZyIzMykDZmNDO2IjZ0IWZ5YTZiVTNjNjZkZGZx8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
注释:
- 负的移位数是非法的,会导致引发
。ValueError
- 左移 n 位等价于不带溢出检测地乘以
pow(2,
。n)
- 右移 n 位等价于不带溢出检测地除以
pow(2,
。n)
- 使用带有至少一个额外符号扩展位的有限个二进制补码表示(有效位宽度为
1
+
max(x.bit_length(),
或以上)执行这些计算就足以获得相当于有无数个符号位时的同样结果。y.bit_length())
reduce函数
reduce函数是聚合操作中最基础的归纳函数,reduce函数会将多个数据按照指定的算法累积叠加起来,最后输出一个数据。
基本语法:
reduce(函数, 可迭代的对象, 初始化的值)
参数说明:
函数:这是一个聚合操作函数,这个函数需要有两个参数。
可迭代的对象:例如列表、集合等可以迭代操作的对象。
初始化的值:可选参数,是否要设置一个最初的值。
from functools import reduce
arr=[2,4,8]
result = reduce(lambda x, y: x*y,arr)
print(result)
输出:64。 其实就是2
*4*8=64
#输出1000以内的斐波那契数列,并算出其和
from functools import reduce
fibonacci = []
a=0
b=1
while b<1000:
fibonacci.append(b)
a,b = b, a+b
print(fibonacci)
r=reduce(lambda a,b:a+b, fibonacci)
print(r)
输出:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
2583
map函数
map函数的语法:
map(函数, 可迭代的对象)
def f(x):
return x*x
r = map(f, [1,2,3,4,5,6,7,8,9])
list(r)
输出:[1, 4, 9, 16, 25, 36, 49, 64, 81]
filter函数
filter函数与map函数在用法上非常的类似,同样是接收两个参数。语法如下:
filter(函数, 可迭代的对象)
他们的区别是map函数返回的是一个列表,而filter函数在第一个参数,也就是传入的函数中要编写一个过滤条件,如果过滤条件为True,则这个元素保留,如果过滤条件为False,则这个元素被过滤掉。
#找奇数
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
输出:[1, 5, 9, 15]
开始读python文档了:),每天争取发点零散小知识点。