网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

python的异或函数 python异或运算

python中的异或运算

leetcode上有这么一道题:【136. Single Number】

创新互联建站主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务昌宁,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

这个题是给出一个非空列表,里面的元素只有一个只出现了一次,其余都出现了两次,找出这个只出现了一次的元素。

这个题目很简单,写了一下直接提交:

翻了一下讨论,发现了一个很简单快速的方法:

查了一下异或运算,发现找到唯一值是异或运算在python中的主要用途之一。其原理是这样的:

输出:70

当a,b都转换为二进制:

输出:0b1010与0b1001100

异或运算是将两个数相同位置(长度不一时要对齐)的数值,不同为1时,结果为1,否则为0 。比如:(0101) ^ (0011) = 0110。

这里a ^ b = 0b1000110,即70。

当两个数相同时,异或运算结果为0.

python 写异或加密

from random import seed,randint

str_in=input('请输入一个字符串:')

you_seed=input('请输入密码:')

you_seed=int(you_seed)

#lock

def my_lock(lock_str,lock_seed):

seed(lock_seed)

li_out=[]

for i in lock_str:

li_out.append(chr(ord(i)^randint(0,65535)))

return ''.join(li_out)

my_lock_str=my_lock(str_in,you_seed)

print('原字符串:',str_in)

print('加密字符串:',my_lock_str)

print('还原后字符串:',my_lock(my_lock_str,you_seed))

input()

#python 3.4

在Python的进制数按位异或问题,怎么解决

按位与

|

按位或

^

按位异或

1.

按位与运算

按位与运算符""是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1

,否则为0。参与运算的数以补码方式出现。

例如:95可写算式如下:

00001001

(9的二进制补码)00000101

(5的二进制补码)

00000001

(1的二进制补码)可见95=1。

按位与运算通常用来对某些位清0或保留某些位。例如把a

的高八位清

保留低八位,

可作

a255

运算

(

255

的二进制数为0000000011111111)。

main(){

int

a=9,b=5,c;

c=ab;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

}

2.

按位或运算

按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

例如:9|5可写算式如下:

00001001|00000101

00001101

(十进制为13)可见9|5=13

main(){

int

a=9,b=5,c;

c=a|b;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

}

3.

按位异或运算

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:

00001001^00000101

00001100

(十进制为12)

main(){

int

a=9;

a=a^15;

printf("a=%d\n",a);

}

python {'0:b'}.format() divmod() 异或xor^ collections.deque()

{ }.format()格式方法的一个指示器

例如:'{0:b}'.format(int(a,2)+int(b,2))

这个的意思就是 按照 2进制 a + 2进制b的格式 输出

: 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

str.format() 格式化数字的多种方法:

Python divmod() 函数

Python 内置函数

python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

在 python 2.3 版本之前不允许处理复数。

函数语法

divmod(a, b)

参数说明:

a: 数字

b: 数字

实例

^ -------异或xor

想复杂了 

^就是数学里的 那个判断的异或符号

但是python里是按2进制算的

就是说

10进制的就按照转换为2进制 再转换为10进制来算

就是比如 5^3 =  6 

因为:

5 = 0101(b)

3 = 0011(b)

二进制之后就是: 01100

再换回10进制就是 6

deque是双边队列,具有队列和栈的性质。相当于可以在两端操作的list。

以下是deque的常用方法:

数组初始化  = [None for _in range(rowNum)]

Python zip() 函数

zip()  函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

res = [a + b for a, b in zip([0] + res, res + [0])]

这句琢磨了半天

感觉应该跟三元表达式一样是个倒装句

但是其实应该是个省略句。。。

1、python自带punctuation包,可以消除所有中文标点符号。

Python itertools模块combinations方法

itertools模块combinations(iterable, r)方法可以创建一个迭代器,返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序。

例1:

例2、实现一位数组的所有排列组合:

例3:利用chain.from_iterable方法将多个迭代器连接起来


网站题目:python的异或函数 python异或运算
本文URL:http://bjjierui.cn/article/dogedds.html

其他资讯