Python-1-变量、运算符、数据类型与位运算

Python

运算符

  1. 算术运算符
    ’+‘,’-‘,’*‘,’/‘,’//‘(整除),’%‘(取余),’**‘(幂)
    其中,整除是向下整除,即直接取整数位
  2. 比较运算符
    ‘>’, ‘<’, ‘>=’, ‘<=’, ‘==’, ‘!=’
  3. 逻辑运算符
    ‘and’, ‘or’, ‘not’
  4. 位运算符 (二进制运算)
    ‘~’(取反), ‘&’, ‘|’, ‘^’(异或,相异为1), ‘<<’(左移), ‘>>’
  5. 三元运算符
    结合if else来实现
    e.g. max = x if x>y else y
  6. 其他运算符
    ‘in’, ‘not in’, ‘is’, ‘is not’
    note: is和is not比较的是两个变量的内存地址,而==和!=比较的是两个变量的值;当两个变量指向不可变类型时,两种运算符完全等价,可变类型则有区别
  7. 运算符优先级
    规则:一元运算符高于二元运算符;先算术运算,再移位运算,最后位运算;逻辑运算最后结合
    上述运算符优先级由低到高分别为
    (1) or
    (2) and
    (3) not
    (4) in, not in
    (5) is, is not
    (6) 比较运算符:<, >, <=, >=, !=, ==
    (7) |
    (8) ^
    (9) &
    (10) <<, >>
    (11) +, -(算术运算符)
    (12) *, /, %
    (13) +x, -x (正负号)
    (14) ~
    (15) **

变量

命名规则:可以包括字母、数字、下划线,但不能以数字开头;
变量名大小写敏感

数据类型与转换

python中的数据类型有整型int、浮点型float、布尔型bool
类型转换:转整型int(),转字符串str(),转浮点型float()
布尔型只取True和False,在数值运算中分别以1,0表示
布尔作用在容器型变量中时,只要容器变量不为空,则返回False,否则为True
isinstance(object, classinfo):用于判断一个对象object是否是一个已知的类型calssinfo;
与type()不同,isinstance会考虑继承关系,认为子类是一种父类类型,type()不会
note: Python中万物皆对象,每个对象都有对应的属性和方法,可通过dir()查看属性和方法

print函数

print(*object, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出;
关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;
关键字参数end是输出结束时的字符,默认是换行符\n;
关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;
关键字参数flush是立即把内容输出到流文件,不作缓存。

位运算

  1. 原码、反码和补码
    原码:二进制的表示形式,最高位为符号位
    反码:正数的反码就是原码,负数的反码等于符号位不变,剩余按位取反
    补码:计算机内部的表示方式,正数的补码就是原码,负数的补码是反码+1
    符号位:0表示正数,1表示负数,在位运算中参与运算
    综上,正数的原码=反码=补码,负数的反码+1=补码
  2. 按位非(~)操作
    不考虑符号位,直接取反
  3. 按位与(&)操作
    一个为0即为0
  4. 按位或(|)操作
    一个为1即为1
  5. 按位异或(^)操作
    相异为1,满足交换律和结合律
    任何数与0做异或为本身,与本身做异或为0
  6. 按位左移操作<<
    舍掉高位,低位补0
  7. 按位右移操作>>
    舍掉低位,高位补0
  8. 利用位运算实现快速计算
    n>>m = n / (2^m)
    n<<m = n * (2^m)
    交换两个整数:a^=b, b^=a, a^=b
    确定a最后为1 的位置:a&(-a)
  9. 集合运算
    a的补集:~a
    a∩b:a&b
    a∪b:a|b
    a-b: a&(~b)

练习题(leetcode-136)

Q: 给定一个非空整数数组,除了某个元素只出现一次外,其余均出现两次,找出这个只出现一次的数,用位运算解决
A: 考虑使用异或操作
一个数与0做异或操作的结果为数本身,一个数与自身做异或操作,结果为0,即0^a=a, a^a=0

res = 0
for num in nums:
	res ^= num
return res

时间复杂度O(n),空间复杂度O(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值