变量、运算符与数据类型
print()函数
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- 将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出;
- 关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;
- 关键字参数end是输出结束时的字符,默认是换行符\n;
- 关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;
- 关键字参数flush是立即把内容输出到流文件,不作缓存。
运算符
以前看过的python教程里没有提到位运算符相关(比如《python编程从入门到实践》),不确定对于python学习的作用,先简单记录
1.原码、反码与补码
二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。
2.按位运算
- 按位非操作 ~
- 按位与操作 &
- 按位或操作 |
- 按位异或操作 ^
- 按位左移操作 <<
- 按位右移操作 >>
3.利用位运算实现快速计算
- 通过
<<
,>>
快速计算2的倍数问题。 - 通过
^
快速交换两个整数;通过^
快速交换两个整数。 - 通过
a & (-a)
快速获取a
的最后为 1 位置的整数。
4. 利用位运算实现整数集合
一个数的二进制表示可以看作是一个集合(0 表示不在集合中,1 表示在集合中)。
比如集合 {1, 3, 4, 8}
,可以表示成 01 00 01 10 10
而对应的位运算也就可以看作是对集合进行的操作。
元素与集合的操作:
a | (1<<i) -> 把 i 插入到集合中
a & ~(1<<i) -> 把 i 从集合中删除
a & (1<<i) -> 判断 i 是否属于该集合(零不属于,非零属于)
集合之间的操作:
a 补 -> ~a
a 交 b -> a & b
a 并 b -> a | b
a 差 b -> a & (~b)
注意:整数在内存中是以补码的形式存在的,输出自然也是按照补码输出。