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) <class 'str'> >>> 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) '0o24' >>> hex(a) '0x14' >>> format(a,'b') '10100' >>> format(a,'o') '24' >>> format(a,'x') '14'
字符串
字符串(python2默认使用ascii编码,使用Unicode编码须在字符串前加u,python3使用unicode编码)
a=’str’
a=u’str’
字符串表示方法
- 单引号:’str’ ‘1’
- 双引号:”str””1”
- 三引号:’’’…str…’’’ “””…str…”””
- 转义字符:“str1 \tadded tab\nstr2”
- Raw字符串:r”C:\user\administrator”(无法进行转义操作)
字符串操作
字符串合并
>>> 'abc'+'def' 'abcdef' >>> 'hello' *5 'hellohellohellohellohello' >>> print ('-'*50) -------------------------------------------------- >>> "aa""bb" 'aabb' >>> 'ab''cd' 'abcd'
字符串取值
a="text" >>> for c in a: ... print (c,end='') ... text >>> for c in a: ... print (c,end='-') ... t-e-x-t- >>> 'x' in a True >>> text='this_is_str' >>> text[0:4] 'this' >>> text[5:7] 'is' >>> text[:4] 'this' >>> text[-3:] 'str' >>> text[-12:-7] 'this' >>> text[::2] 'ti_ssr' >>> text[8:1:-2] 'ss_i'
字符串编码转换
>>> ord('d') 100 >>> chr(99) 'c' >>> ord('王') 29579 >>> chr(29579) '王'
字符串大小写转换
- 这里利用ascii编码进行大小写转换
>>> Text="" #初始化Text >>> text="aSdFgHjK" >>> for i in text: ... i_code=ord(i) ... if 97<=i_code and i_code<=122: ... Text+=chr(i_code-32) ... else: ... Text+=i ... >>> Text'ASDFGHJK' >>> for x in text: ... x_code=ord(x) ... if 65<=x_code and x_code<=90: ... Text+=chr(x_code+32) ... else: ... Text+=x ... >>> Text 'ASDFGHJKasdfghjk'
- 这里利用字符串的方法进行转换
>>> str='asdFGHzxcVBN' >>> str.replace('asd','ASD') 'ASDFGHzxcVBN'
- 除此之外,还可以使用字符串的大小写方法进行大小写转换
ascii编码对照表
二进制 | 十进制 | 十六进制 | 图形 | |
0010 0000 | 32 | 20 | (空格) | |
0010 0001 | 33 | 21 | ! | |
0010 0010 | 34 | 22 | “ | |
0010 0011 | 35 | 23 | # | |
0010 0100 | 36 | 24 | $ | |
0010 0101 | 37 | 25 | % | |
0010 0110 | 38 | 26 | & | |
0010 0111 | 39 | 27 | ‘’ | |
0010 1000 | 40 | 28 | ( | |
0010 1001 | 41 | 29 | ) | |
0010 1010 | 42 | 2A | * | |
0010 1011 | 43 | 2B | + | |
0010 1100 | 44 | 2C | , | |
0010 1101 | 45 | 2D | - | |
0010 1110 | 46 | 2E | . | |
0010 1111 | 47 | 2F | / | |
0011 0000 | 48 | 30 | 0 | |
0011 0001 | 49 | 31 | 1 | |
0011 0010 | 50 | 32 | 2 | |
0011 0011 | 51 | 33 | 3 | |
0011 0100 | 52 | 34 | 4 | |
0011 0101 | 53 | 35 | 5 | |
0011 0110 | 54 | 36 | 6 | |
0011 0111 | 55 | 37 | 7 | |
0011 1000 | 56 | 38 | 8 | |
0011 1001 | 57 | 39 | 9 | |
0011 1010 | 58 | 3A | : | |
0011 1011 | 59 | 3B | ; | |
0011 1100 | 60 | 3C | < | |
0011 1101 | 61 | 3D | = | |
0011 1110 | 62 | 3E | > | |
0011 1111 | 63 | 3F | ? | |
0100 0000 | 64 | 40 | @ | |
0100 0001 | 65 | 41 | A | |
0100 0010 | 66 | 42 | B | |
0100 0011 | 67 | 43 | C | |
0100 0100 | 68 | 44 | D | |
0100 0101 | 69 | 45 | E | |
0100 0110 | 70 | 46 | F | |
0100 0111 | 71 | 47 | G | |
0100 1000 | 72 | 48 | H | |
0100 1001 | 73 | 49 | I | |
0100 1010 | 74 | 4A | J | |
0100 1011 | 75 | 4B | K | |
0100 1100 | 76 | 4C | L | |
0100 1101 | 77 | 4D | M | |
0100 1110 | 78 | 4E | N | |
0100 1111 | 79 | 4F | O | |
0101 0000 | 80 | 50 | P | |
0101 0001 | 81 | 51 | Q | |
0101 0010 | 82 | 52 | R | |
0101 0011 | 83 | 53 | S | |
0101 0100 | 84 | 54 | T | |
0101 0101 | 85 | 55 | U | |
0101 0110 | 86 | 56 | V | |
0101 0111 | 87 | 57 | W | |
0101 1000 | 88 | 58 | X | |
0101 1001 | 89 | 59 | Y | |
0101 1010 | 90 | 5A | Z | |
0101 1011 | 91 | 5B | [ | |
0101 1100 | 92 | 5C | \ | |
0101 1101 | 93 | 5D | ] | |
0101 1110 | 94 | 5E | ^ | |
0101 1111 | 95 | 5F | _ | |
0110 0000 | 96 | 60 | ` | |
0110 0001 | 97 | 61 | a | |
0110 0010 | 98 | 62 | b | |
0110 0011 | 99 | 63 | c | |
0110 0100 | 100 | 64 | d | |
0110 0101 | 101 | 65 | e | |
0110 0110 | 102 | 66 | f | |
0110 0111 | 103 | 67 | g | |
0110 1000 | 104 | 68 | h | |
0110 1001 | 105 | 69 | i | |
0110 1010 | 106 | 6A | j | |
0110 1011 | 107 | 6B | k | |
0110 1100 | 108 | 6C | l | |
0110 1101 | 109 | 6D | m | |
0110 1110 | 110 | 6E | n | |
0110 1111 | 111 | 6F | o | |
0111 0000 | 112 | 70 | p | |
0111 0001 | 113 | 71 | q | |
0111 0010 | 114 | 72 | r | |
0111 0011 | 115 | 73 | s | |
0111 0100 | 116 | 74 | t | |
0111 0101 | 117 | 75 | u | |
0111 0110 | 118 | 76 | v | |
0111 0111 | 119 | 77 | w | |
0111 1000 | 120 | 78 | x | |
0111 1001 | 121 | 79 | y | |
0111 1010 | 122 | 7A | z | |
0111 1011 | 123 | 7B | { | |
0111 1100 | 124 | 7C | \ | |
0111 1101 | 125 | 7D | } | |
0111 1110 | 126 | 7E | ~ |