变量、运算符与数据类型
把阿里云Python入门(上)中自己不太熟悉的知识点摘录下来,以便于进行掌握:
2.运算符
位运算符
操作符 | 名称 |
---|---|
~ | 按位取反 |
& | 按位取与 |
\| | 按位取或 |
^ | 按位取异或 |
<< | 左移 |
>> | 右移 |
~4
# -5
# 这里为什么是这样呢?想想编码原理
bin(~4)
# '-0b101'
bin(4^5)
# '0b1'
三元运算符
这个我经常忘记,一定要注意
x,y = 3,4
x if x > y else y
4
切记:for 和 if 同时使用时 for 在前 if 在后。
[i for i in range(10) if i % 2 ]
# [1, 3, 5, 7, 9]
4.数据类型转换
浮点数
如果我们想保留浮点型小数点后面的 n
位,可以使用 decimal
里面的 Decimal
和 getcontext()
方法来实现。
import decimal
from decimal import Decimal
decimal.getcontext()
# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999,\
# Emax=999999, capitals=1, clamp=0, flags=[], \
# traps=[InvalidOperation, DivisionByZero, Overflow])
上面显示默认的精度为28位。(prec=28
)
Decimal(1)/Decimal(3)
# Decimal('0.3333333333333333333333333333')
decimal.getcontext().prec = 3
Decimal(1)/Decimal(3)
# Decimal('0.333')
获得类型信息
isinstance(1,int)
# True
type(1)
# int
要注意:type()
不会认为子类是一种父类类型,不考虑继承关系;isinstance()
会认为子类是一种父类类型,考虑继承关系。
5. print()函数
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出;
- 关键字参数
sep
是实现分隔符,比如多个参数输出时想要输出中间的分隔字符; - 关键字参数
end
是输出结束时的字符,默认是换行符\n
; - 关键字参数
file
是定义流输出的文件,可以是标准的系统输出sys.stdout
,也可以重定义为别的文件; - 关键字参数
flush
是立即把内容输出到流文件,不作缓存。
shoplist = ['apple', 'mango', 'carrot', 'banana']
for item in shoplist:
print(item, end='&')
# apple&mango&carrot&banana&
shoplist = ['apple', 'mango', 'carrot', 'banana']
for item in shoplist:
print(item, 'another string', sep='&')
# apple&another string
# mango&another string
# carrot&another string
# banana&another string
位运算
1. 原码、反码和补码
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
反码:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
补码:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。(即在反码的基础上+1)
3. 利用位运算实现快速计算
利用<<
和>>
实现对于2倍数的乘除:
10 << 1
# 20
10 >> 1
# 5
10 >> 3
# 1
通过^
快速交换两个整数:
a,b = 2,3
a ^= b
b ^= a
a ^= b
print(a,b)
# 3 2
通过 a & (-a)
快速获取a
的最后为 1 位置的整数:
5 & (-5)
# 1
14 & (-14)
# 2
循环语句
6. enumerate()函数
关于enumerate()
函数自己要注意的是该函数可以设置开始遍历的索引:
languages = ['Python', 'R', 'Matlab', 'C++']
for i, language in enumerate(languages, 2):
print(i, 'I love', language)
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++