python基础:3.高级运算符

mac2022-06-30  87

python基础:3.高级运算符

1.异或运算

  十进制的异或运算,先转成二进制进行异或,按位进行比较,对应位置相同则为0,对应位置不同则为1,,再从异或结果转成十进制。

  python中:

  1 ^ 1 = 0   

  1 ^ 2 = 3

  1 ^ 0 = 1

  0 ^ 1 = 1

  1 的二进制0000 0001

  2 的二进制0000 0010

  1 ^ 2 的二进制是:0000 0011 换算成十进制为3

  异或的交换律  1 ^ 0 = 0 ^ 1

  异或的结合律   1 ^ 2 ^ 3 =  1 ^ (2 ^ 3)

一个非空整数列表,除了某个元素只出现一次外,其余每个元素均出现两次,找到只出现一次的元素,leetcode136例如 [1,2,3,4,3,2,1] 异或的结合律和交换律1 ^ 2 ^ 3 ^ 4 ^ 3 ^ 2 ^ 1 = 1 ^ 1 ^ 2 ^ 2 ^ 3 ^ 3 ^ 4 = 0 ^ 4 = 4 def solve(li): temp = li[0] for i in range(1,len(li)): temp = temp ^li[i] print(temp) 结果:4一般解法: def solve(li): for i in range(len(li)): ret = li.count(li[i]) if ret == 1: print(li[i])solve([1,2,3,4,3,2,1])结果:4 1 - n 放在含有 n + 1 个元素的列表中,只有唯一的一个元素值重复,其他均只出现一次,每个列表元素只能访问一次,设计一个算法,将它找出来,不能使用辅助存储空间 Leetcode 287 分析:找出重复的元素。 1-5个元素的列表-- [1,2,3,4,5] 5+1个元素的列表---[0,1,2,3,4,5] [1,2,3,3,4,5] 找出3 同样的异或结合律和交换律 0 ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 1 ^ 2 ^ 3 ^ 3 ^ 4 ^ 5 思路:一个数奇数次异或自己就是本身,偶数次异或自己就是0,要找出3,就让3自己异或自己奇数次。其他数异或自己偶数次,就可以了。 0 ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 1 ^ 2 ^ 3 ^ 3 ^ 4 ^ 5 = 1 ^ 1 ^ 2 ^ 2 ^ 0 ^ 3 ^ 3 ^ 3 ^ 4 ^ 4 ^ 5 ^ 5 = 3 def sove(li): ret = 0 temp_li = [x for x in range(0,len(li)] for i in range(0, len(temp_li)) ret = ret ^ li[i] ^ temp_li[i] print(ret) sove([1,2,3,3,4,5]) 结果:3

 

 2.按位运算

  按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

  a = 1111  0100

  b = 1001 1011

  a & b = 1001 0000

  

posted on 2019-07-30 20:53  张京墨 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/meloncodezhang/p/11272702.html

最新回复(0)