简介
数字(number)是不可更改的类型,因此变更数字会生成新的对象,重新分配内存空间。
Python3中支持三种数值类型:
- 整型(int):又称整数。Python3中整型没有限制大小,因此不包括python2中的长整型。除此之外,布尔类型也是只有两个值的整型。
- 浮点型(float):浮点型值通常都有一个小数点和一个可选的后缀e(科学计数法,比如:1.5e3=1500)。
- 复数(complex):复数由实数部分和虚数部分组成,实数部分和虚数部分都是浮点型,虚数部分必须有后缀j或J(比如1.3+1.4j)或者用
complex(1.3, 1.4)
表示。
类型转换
这三种数值类型之间可以通过类型函数名进行转换。
1 2 3 4 |
int(x) #将x转成整数 float(x) #将x转成浮点数 complex(x) #将x转成一个复数,实部为x,虚部为0 complex(x, y) #将x、y转成一个复数,实部为x,虚部为y |
除了这些转换函数,Python中提供很多用于数字数据处理的函数:
- 数学运算函数
- 三角函数
- 布尔函数
- 随机数函数
- 进制转换函数
- ASCII转换函数
数学运算函数
函数 | 描述 |
---|---|
abs(x) | 返回数字的绝对值 |
(x > y) – (x < y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次幂 |
fabs(x) | 返回数字的绝对值 |
ceil(x) | 返回数字的上入整数 |
floor(x) | 返回数字的下舍整数 |
log(x) | 默认以e为底的函数,可以引入其他底,log(x, 底) |
log10(x) | 返回以10为基数的x的对数 |
max(x1, x2, …) | 返回给定参数的最大值,参数可以为序列 |
min(x1, x2, …) | 返回给定参数的最小值,参数可以为序列 |
modf(x) | 返回x的小数部分与整数部分,两部分的数值符号与x相同,整数部分以浮点型表示 |
pow(x, y) | x的y次方 |
round(x, n) | ”理论上”返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数 |
sqrt(x) | 返回数字x的平方根 |
divmod(x, y) | 除法-取余计算的结合。返回一个元组(x / y, x % y), 对浮点型和复数的商进行下取整 |
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
>>>import math >>>abs(-5) -5 >>>(2 > 1) - (2 < 1) 1 >>>math.exp(2) 7.38905609893065 >>>math.fabs(-5) 5.0 >>>math.ceil(4.5) 5 >>>math.floor(4.5) 4 >>>math.log(math.e) 1.0 >>>math.log(9, 3) 2.0 >>>max([1, 2, 3, 4]) 4 >>>min([1, 2, 3, 4]) 1 >>>math.modf(-2.5) (-0.5, -2.0) >>>pow(2, 3) 8 >>>round(0.5) 0 >>>round(1.5) 2 >>>round(2.675) 2.67 >>>round(1.245) 1.25 >>>math.sqrt(9) 3.0 >>>divmod(4, 3) (1, 1) |
需要注意的是round()
函数,当近似到整数部分,如果距离两边一样远,会保留到偶数的一边,比如round(0.5)
和round(-0.5)
都会保留到0,而round(1.5)
会保留到2。如果是保留几位小数,要看机器在截断二进制数的时候是偏大还是偏小了,比如round(2.675, 2)
结果为2.67,而round(1.245, 2)
结果为1.25。在机器中浮点数不一定能精确表达,因为换算成一串1或0后可能是无限位数的,机器已经做出了截断处理,实际得到的值会或大或小一点点,从而导致这种“bug”。因此,对浮点精度要求很高的话,请用decimal模块。
三角函数
函数 | 描述 |
---|---|
sin(x) | 返回的x弧度的正弦值 |
cos(x) | 返回x的弧度的余弦值 |
tan(x) | 返回x弧度的正切值 |
asin(x) | 返回x的反正弦弧度值 |
acos(x) | 返回x的反余弦弧度值 |
atan(x) | 返回x的反正切弧度值 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值 |
hypot(x, y) | 返回欧几里德范数 sqrt(x*x + y*y) |
degrees(x) | 将弧度转换为角度 |
radians(x) | 将角度转换为弧度 |
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 |
>>>import math >>>math.sin(math.pi/2) 1.0 >>>math.hypot(3, 4) 5.0 >>>math.degrees(math.pi) 180.0 >>>math.radians(180) 3.141592653589793 |
布尔函数
布尔值有两个:True和False,他们分别对应1和0。
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
>>>bool(1) True >>>bool(0) False >>>bool('0') True >>>bool([]) False >>>x = 1 >>>y = x < 2 >>>y True |
随机数函数
在数据挖掘,游戏设计和算法等领域都要使用随机数,python的random
模块包含以下常用的随机数函数:
函数 | 描述 |
---|---|
choice(x) | 从序列x的元素中随机挑选一个元素 |
random() | 在[0,1)范围内随机生成一个实数 |
randint(x, y) | 在整数[x,y]范围内随机生成一个整数 |
uniform(x, y) | 在[x,y]范围内随机生成一个实数 |
randrange(start, stop, step) | 从指定范围内[start, stop)不包含stop,按指定步数递增的集合中获取一个随机数,步数缺省值为1 |
shuffle(x) | 将序列x的所有元素随机排序 |
seed(x) | 随机数生成器的种子seed。如果不设定x,每次结果都随机,该函数没有返回值,在调用其他随机模块函数之前调用此函数。 |
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
>>>import random >>>random.choice([1, 2, 3, 4]) 3 >>>random.random() 0.297556756440553 >>>random.randint(1, 10) 4 >>>random.uniform(1, 3) 1.786673945115081 >>>random.randrange(0, 10, 2) 6 >>>x = [1, 2, 3, 4] >>>random.shuffle(x) >>>x [3, 4, 1, 2] >>>random.seed(1) #种子数固定,产生的随机数一样 >>>random.random() 0.13436424411240122 >>>random.seed(1) #种子数固定,产生的随机数一样 >>>random.random() 0.13436424411240122 |
进制转换函数
函数 | 描述 |
---|---|
int(x, y) | 将字符串x(二进制、八进制、十六进制)转换成十进制数并以字符串形式返回,y参数表示x是几进制数 |
bin(x) | 将数字x(十进制)转换成二进制数并以字符串形式返回 |
oct(x) | 将数字x(二进制、十进制、十六进制)转换成八进制数并以字符串形式返回 |
hex(x) | 将数字x(十进制)转换成十六进制数并以字符串形式返回 |
转十进制
使用int()
函数,将字符串转换成十进制数。
二进制转十进制
1 2 |
>>>int('101', 2) 5 |
八进制转十进制
1 2 |
>>>int('17', 8) 15 |
十六进制转十进制
1 2 |
>>>int('0xf', 16) 15 |
转二进制
十进制转二进制
1 2 |
>>>bin(5) '0b101' |
八进制转二进制
先转十进制,再转二进制
1 2 |
>>>bin(int('17', 8)) '0b1111' |
十六进制转二进制
先转十进制,再转二进制
1 2 |
>>>bin(int('0xf', 16)) '0b1111' |
转八进制
二进制转八进制
1 2 |
>>>oct(0b1111) '0o17' |
十进制转八进制
1 2 |
>>>oct(15) '0o17' |
十六进制转八进制
1 2 |
>>>oct(0xf) '0o17' |
转十六进制
十进制转十六进制
1 2 |
>>>hex(15) '0xf' |
二进制转十六进制
先转十进制,再转十六进制
1 2 |
>>>hex(int('0b1111', 2)) '0xf' |
八进制转十六进制
先转十进制,再转十六进制
1 2 |
>>>hex(int('0o17', 8)) '0xf' |
ASCII转换函数
函数 | 描述 |
---|---|
chr(x) | 将x的值转换成ASCII字符,x的范围在[0, 255]之间 |
ord(x) | 接受一个ASCII字符,返回相应的ASCII值 |
代码演示:
1 2 3 4 5 |
>>>chr(97) 'a' >>>ord('a') 97 |
完整的ASCII表
最后附上完整的ASCII对查表:
ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 |
---|---|---|---|---|---|---|---|
0 | NUL | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | ” | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | ‘ | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | – | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | X | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | \ | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ~ |
31 | US | 63 | ? | 95 | — | 127 | DEL |
十进制 | 十六进制 | 字符 | 十进制 | 十六进制 | 字符 |
---|---|---|---|---|---|
128 | 80 | Ç | 192 | C0 | └ |
129 | 81 | ü | 193 | C1 | ┴ |
130 | 82 | é | 194 | C2 | ┬ |
131 | 83 | â | 195 | C3 | ├ |
132 | 84 | ä | 196 | C4 | ─ |
133 | 85 | à | 197 | C5 | ┼ |
134 | 86 | å | 198 | C6 | ╞ |
135 | 87 | ç | 199 | C7 | ╟ |
136 | 88 | ê | 200 | C8 | ╚ |
137 | 89 | ë | 201 | C9 | ╔ |
138 | 8A | è | 202 | CA | ╩ |
139 | 8B | ï | 203 | CB | ╦ |
140 | 8C | î | 204 | CC | ╠ |
141 | 8D | ì | 205 | CD | ═ |
142 | 8E | Ä | 206 | CE | ╬ |
143 | 8F | Å | 207 | CF | ╧ |
144 | 90 | É | 208 | D0 | ╨ |
145 | 91 | æ | 209 | D1 | ╤ |
146 | 92 | Æ | 210 | D2 | ╥ |
147 | 93 | ô | 211 | D3 | ╙ |
148 | 94 | ö | 212 | D4 | Ô |
149 | 95 | ò | 213 | D5 | ╒ |
150 | 96 | û | 214 | D6 | ╓ |
151 | 97 | ù | 215 | D7 | ╫ |
152 | 98 | ÿ | 216 | D8 | ╪ |
153 | 99 | Ö | 217 | D9 | ┘ |
154 | 9A | Ü | 218 | DA | ┌ |
155 | 9B | ¢ | 219 | DB | █ |
156 | 9C | £ | 220 | DC | ▄ |
157 | 9D | ¥ | 221 | DD | ▌ |
158 | 9E | ? | 222 | DE | ? |
159 | 9F | ƒ | 223 | DF | ? |
160 | A0 | á | 224 | E0 | α |
161 | A1 | í | 225 | E1 | ß |
162 | A2 | ó | 226 | E2 | Γ |
163 | A3 | ú | 227 | E3 | π |
164 | A4 | ñ | 228 | E4 | Σ |
165 | A5 | Ñ | 229 | E5 | σ |
166 | A6 | ª | 230 | E6 | µ |
167 | A7 | º | 231 | E7 | τ |
168 | A8 | ¿ | 232 | E8 | Φ |
169 | A9 | ? | 233 | E9 | Θ |
170 | AA | ¬ | 234 | EA | Ω |
171 | AB | ½ | 235 | EB | δ |
172 | AC | ¼ | 236 | EC | ∞ |
173 | AD | ¡ | 237 | ED | φ |
174 | AE | « | 238 | EE | ε |
175 | AF | » | 239 | EF | ∩ |
176 | B0 | ? | 240 | F0 | ≡ |
177 | B1 | ? | 241 | F1 | ± |
178 | B2 | ▓ | 242 | F2 | ≥ |
179 | B3 | │ | 243 | F3 | ≤ |
180 | B4 | ┤ | 244 | F4 | ? |
181 | B5 | ╡ | 245 | F5 | ? |
182 | B6 | ╢ | 246 | F6 | ÷ |
183 | B7 | ╖ | 247 | F7 | ≈ |
184 | B8 | ╕ | 248 | F8 | ≈ |
185 | B9 | ╣ | 249 | F9 | ? |
186 | BA | ║ | 250 | FA | · |
187 | BB | ╗ | 251 | FB | √ |
188 | BC | ╝ | 252 | FC | ? |
189 | BD | ╜ | 253 | FD | ² |
190 | BE | ╛ | 254 | FE | ■ |
191 | BF | ┐ | 255 | FF | ÿ |