python数据类型:
Number(数字)
String(字符串)
List(列表)
Dictonary(字典)
Tuple(元组)
sets(集合)
其中数字、字符串、元组是不可变的,列表、字典是可变的。
对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收)。
数字
int:整数
1.正负数
2.十六进制(表示方式为0x或者0X开头。例如:0xff)
3.八进制(表示方式为0o或者0O开头。例如:0o632457)
4.二进制 (表示方式为0b或者0B开头。例如:0b101100)
fraction:分数
float:浮点数
complex:复数
bool:布尔型(特殊的数值类型,只有True和False两个值)
进制转换
整数转其他进制
使用bin(i),oct(i),hex(i)函数可以将十进制数分别转换为二进制,八进制,十六进制
>>> s=10
>>> bin(s)
'0b1010'
>>> oct(s)
'0o12'
>>> hex(s)
'0xa'
使用int(str,base)可以将非十进制的数转换成整数
,其中str是文本形式的数字,base可以为2,8,16数字,分别代表二进制,八进制,十六进制,最高到36位,最低为2
>>> int('0b10010',2)
18
>>> int('0o52415',8)
21773
>>> int('0x134ab',16)
79019
>>> int('s',32)
28
>>> int('yz',36)
1259
当然也可以进行16进制转二进制八进制,八进制可以转其他进制
>>> hex(0b1001)
'0x9'
>>> hex(0o1234)
'0x29c'
>>> oct(0b101)
'0o5'
>>> oct(0xff)
'0o377'
>>> bin(0xff)
'0b11111111'
>>> bin(0o7777)
'0b111111111111'
各类运算符
算数运算符:+,-,*,/,%.//,**
比较运算符:==,!=,>,=
赋值运算符:=,+=,-=,*=,/=,%=,//=.**=
位运算符:&,|,^,~,<>
逻辑运算符:and,or,not
成员运算符:in,not in
身份运算符:is,is not
>>> a=12
>>> f=~a
>>> f
-13
>>> bin(f)
'-0b1101'
>>> bin(a)
'0b1100'
>>> bin(a<<1)
'0b11000'
>>> bin(a>>1)
'0b110'
>>> list=[1,2,3,4,5]
>>> a=3
>>> print (a in list)
True
>>> print (a not in list)
False
>>> a=['1,2,3,4,5']
>>> b=a
>>> print (b is a )
True
>>> print (b is not a )
False
>>> b=a[:]
>>> print (b is a) #这是因为字符串是不可变的
False
>>> print (id(a))
42473480
>>> print (id(b))
42485000
运算符优先级
** (优先级最高的是幂运算)
~,+,- (加和减都是一元运算符)
*,/,%,//
+,-
<>
&
^,|
<=,>=,
==,!=
=,+=,-=,*=,/=,%=,//=,**=
数学函数的应用
power:幂函数,功能与运算符**一样
>>> pow(2,3)
8
sqrt:取当前数的平方根
>>> import math
>>> math.sqrt(4)
2.0
max:最大值
>>>max(2,3,4,5,1,9,6)
9
min:最小值
>>> min(2,3,4,5,1,9,6)
1
abs与fabs:取绝对值,fabs取出的是浮点数
>>> abs(-1)
1
>>> math.fabs(-1)
1.0
round:四舍五入(当小数为5的时候会向靠近偶数的一端进)
>>> round(3.5)
4
>>> round(2.5)
2
>>> round(2.54)
3
>>> round(2.45)
2
ceil:向上取整
>>> math.ceil(1.7)
2
>>> math.ceil(1.3)
2
floor:向下取整
>>> math.floor(1.7)
1
>>> math.floor(1.3)
1
cmp:python2中的比较函数,当前面数值大返回-1,一样大返回0,后面数值大返回1
>>> cmp(1,2)
-1
>>> cmp(1,1)
0
>>> cmp(2,1)
1
随机数函数
- 取0-1之间的随机小数:
>>> import random
>>> random.random()
0.18001643527271916
- 取自定义数里的随机数:(可以取多个元素)
>>> random.choice([1,2,3,4,5])
2
>>> random.choice([1,2,3,4,5])
3
>>> random.sample([1,2,3,4,5,6,7,8,9],2)
[3, 7]
>>> random.sample([1,2,3,4,5,6,7,8,9],3)
[4, 9, 3]
- 随机打乱顺序:
>>> a=[1,2,3,4,5,8]
>>> random.shuffle(a)
>>> a
[1, 8, 2, 3, 4, 5]
- 获取N位随机数:(二进制)
>>> random.getrandbits(6)
55
>>> random.getrandbits(6)
48
>>> random.getrandbits(7)
104
modf:把浮点数的整数位和小数位单独取出来
>>> math.modf(1.4)
(0.3999999999999999, 1.0)
>>> math.modf(1.5)
(0.5, 1.0)
>>> math.modf(2.8)
(0.7999999999999998, 2.0)
>>> math.modf(3.1)
(0.10000000000000009, 3.0)
log:指数函数。默认e为底数,结果为浮点数。也可以自定义底数
>>> math.log(4,2)
2.0
>>> math.log2(4)
2.0
>>> math.log10(100)
2.0
>>> math.log(100,10)
2.0
格式化输出:格式化输出保留有效数字,格式化输出的是字符串
>>> s=format(2.345,'0.2f')
>>> s
>>> type (s)
>>> round(2.5)
2
>>> format(2.5,'0.0f')
'2'
Decimal模块:在使用浮点数的时候,因为计算机是使用二进制表示,所以会出现精度问题,可以使用Deciamal模块来解决精度问题
>>> a=4.2
>>> b=2.1
>>> a+b
6.300000000000001
>>> from decimal import Decimal
>>> a=Decimal('2.1')
>>> b=Decimal('4.2')
>>> a+b
Decimal('6.3')
格式化输出——format:使用format进行进制转换
>>> a=20
>>> bin(a)
'0b10100'
>>> oct(a)
'