-
类型的概念
-
Python语言的类型
数字类型,字符串类型,元组类型 列表类型,文件类型,字典类型
3.1 数字和字符串类型
数字类型
- 程序元素:010/10,存在多种可能
- 表示十进制数值10
- 类似人名一样的字符串
- 数字类型对Python语言中数字的表示和使用进行了定义和规范
3.1.1Python包括三种数字类型
- 整形类型
- 浮点数类型
- 复数类型
1.整数类型
-
与数学上的整数概念一致,没有范围限制
-
pow(x,y)函数:计算 x^y
程序1:pow(2,10)=1024,pow(1,15)=32768
程序2:pow(2,1000)
程序3:pow(2,pow(2,15)) -
示例
- 1010,99,-217
- 0x9a,-0X89 (0x,0X开头表示16进制)
- 0b010,-0B101 (0b,0B开头表示2进制数)
- 0o123, -0O456 (0o,0O开头表示8进制数)
2.浮点数类型
- 示例
- 0.0, -77, -2.17
- 96e4, 4.3e-3, 9.6E5
- 科学计数法使用字母“e”或者“E”作为幂的符号,以10为基数
- 科学计数法含义如:
<a>e<b>
=$a*10^b$
3.复数类型
- 与数学中的复数概念一致,z = a+bj,a是实数部分,b是虚数部分,a和b都是浮点数类型,虚数部分用j或者J标识
- 示例:12.3+4j, -5.6+7J
- Z=1.23e-4 + 5.6e + 89j
-对于复数z,可用z.real获取实数部分,z.imag获取虚数部分
3.1.2 数字类型的关系
-
三种类型存在一种逐渐“扩展”的关系:
- 整数->浮点数->复数(整数是浮点数特例,浮点数是复数特例 )
-
不同数字类型之间可以混合运算,运算结果为最宽类型
- 示例:123 + 4.0 = 127.0(整数 + 浮点数 = 浮点数)
-
三种类型可以相互转换
-
函数:int(), float(), complex()
-
示例:
int(4.5) = 4(直接去掉小数部分) float(4) = 4.0(增加小数部分) complex(4.5) = 4.5 + 0j >>>float(4.5+0j)将会报错,不支持将复数转化为浮点数或者整数,只能将复数的实部或者虚部转化为floath/int In [1]:x = 2.5+1j In [2]:int(x.real) Out[2]: 2 In [3]:float(x.imag) Out[3]: 1.0
-
3.1.3 数据类型的判断
- 函数:type(x) 返回x的类型,适合于所有类型的判断
- 示例:type(4.5)
- 返回:float
3.1.4数子类型的运算
数字类型的运算3.2字符串数据类型
-
字符串是用双引号 " "或者单引号 ' '括起来的一个或多个字符
>>>str1 = "hello" >>>str2 = 'Jason'
-
字符串可以保存在变量里也可以单独存在
-
可以用type()函数测试一个字符串的类型
>>>type(str1) <class 'str'>
-
Python语言转义符:\
-
输出带有引号的字符串,可以使用转义符
>>>print("\"大家好!\"") "大家好!"
-
使用\可以输出带有转义符的字符串
-
字符串是一个字符序列:字符串最左端位置标记为0,依次增加。字符串中的编号叫做“索引”
H | e | l | l | o | J | o | h | n | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
-
单个索引辅助访问字符串中的特定位置
<string>[<索引>] >>>greet ="Hello John" >>>print(greet[2]) 1 >>>x=8 >>>print(greet[x-2]) J
-
Python中字符串索引从零开始,一个长度为L的字符串最后一个字符串的位置是L-1
-
Python同时允许使用负数从字符串右边尾部向左边反向索引,最右侧索引值为-1
>>>greet[-4] J
-
此外,也可以通过两个索引值确定一个位置范围内,返回这个范围的子串
<string>[<start>:<end>]
-
start和end都是整数型数值,这个子序列从索引start开始直到索引end结束,但不包括end位置
>>>greet[0:3] 'Hel'
-
字符串之间可以通过 + 或 * 进行连接
-
加法操作(+)将两个字符串连接成为一个新的字符串
>>>"pine" +"apple" "pineapple"
-
乘法操作(*)构建一个其本身字符串重复连接而成的字符串
>>>3*"pine" 'pinepinepine'
-
-
len()函数能否返回一个字符串长度
>>>len('pine') 4 >>>len("我爱FF猪") 5
-
大多数数据都可以通过str()函数转换为字符串
>>>str(123) '123' >>>str(123.456) '123.456' >>>str(123e+10) '1230000000000.0'
-
字符串操作
操作 | 含义 |
---|---|
+ 连接 | * 重复 |
<string>[ ] | 索引 |
<string>[ : ] | 剪切 |
len(<string>) | 长度 |
<string>.upper() | 字符串中字母大写 |
<string>.lower() | 字符串中字母小写 |
<string>.strip() | 去两边空格及去指定字符 |
<string>.split() | 按指定字符分割字符串为数组 |
<string>.join() | 连接两个字符串序列 |
<string>.find() | 搜索指定字符串 |
<string>.replace() | 字符串替换 |
for <var> in <string> | 字符串迭代 |
-
可以通过 for 和 in 组成的循环来遍历字符串中
每个字符-
格式如下:
for <var> in <string>: 操作
-
-
用转义符可以在字符串中表达一些不可直接打印的信息
例如:用\n表示换行
- 字符串"Hello\nWorld\n\nGoodbye 32\n" - 用print()函数打印后的输出效果如下: Hello World Goodbye 32
3.3 元组及列表
元组的概念
元组是包含多个元素的类型,元素之间用逗号分割。
例如:t1 = 123,456, “hello”
元组可以是空的,t2=()
元组包含一个元素时:t3=123,
元组外侧可以使用括号,也可以不使用
与字符串类型类似,可以通过索引区间来访问元组中部分元素。
例如:t[1:]
与字符串一样,元组之间可以使用+号和*号进行运算。
元组的特点
元组中元素可以是不同类型;
一个元组也可以作为另一个元组的元素,此时,作为元
素的元组需要增加括号,从而避免歧义。
例如:t3='123','456',('中国,我爱你')
元组中各元素存在先后关系,可以通过索引访问元组
中元素。
例如:t3[0]
元组定义后不能更改,也不能删除。
例如:t3[0]=456
元组总结
Python语言中的元组类型定义后不能修改
不可变的tuple有什么意义呢?
因为tuple不可变,所以代码更安全。
如果仅考虑代码的灵活性,也可以用列表类型代替元组类型。
列表的概念
基本概念
列表(list)是有序的元素集合;
列表元素可以通过索引访问单个元素;
列表与元组类似
列表中每个元素类型可以不一样
访问列表中元素时采用索引形式
列表与元组不同
列表大小没有限制,可以随时修改
列表的操作
针对列表有一些基本操作,这些操作与字符串操作类似
列表操作符 | 操作符含义 |
---|---|
< list1 > + < list2> | 连接两个列表 |
< list > * < 整数类型 > | 对列表进行整数次重复 |
< list > [< 整数类型 >] | 索引列表中的元素 |
len( < seq > ) | 列表中元素个数 |
< list >[ < 整数类型 > : < 整数类型 >] | 取列表的一个子序列 |
for < var > in < list > : | 对列表进行循环列举 |
< expr > in < list > | 成员检查,判断<expr>是否在列表中 |
示例:
l = [1,2,3,"hello",9]
l
Out[35]:
[1, 2, 3, 'hello', 9]
l2 = [4,5,6,'world',9]
l2
Out[36]:
[4, 5, 6, 'world', 9]
l +l2
Out[40]:
[1, 2, 3, 'hello', 9, 4, 5, 6, 'world', 9]
l[3]+ " "+ l2[3]
Out[42]:
'hello world'
#%%
l3=[]
l4=[]
for i in l:
if type(i) is str:
l3.append(i)
else:
l4.append(i)
l3
['hello']
l4
[1,2,3,9]
列表相关方法
方法 | 方法含义 |
---|---|
< list > . append ( x ) | 将元素x增加到列表的最后 |
< list > . sort ( ) | 将列表元素排序 |
< list > . reverse ( ) | 将序列元素反转 |
< list > . index ( ) | 返回第一次出现元素x的索引值 |
< list > . insert ( i, x ) | 在位置i处插入新元素x |
< list > . count ( x ) | 返回元素x在列表中的数量 |
< list > . remove ( x ) | 删除列表中第一次出现的元素x |
< list > . pop ( i ) | 取出列表中位置i的元素,并删除它 |
示例
l5 = [1,2,3,8,5]
l5.append(10)
l5
Out[ ]:
[1,2,3,8,5,10]
l5.sort()
l5
Out[ ]:
[1,2,3,5,8,10]
l5.reverse()
l5
Out[ ]:
[10,8,5,3,2,1]
l5.insert(3,2)
l5
Out[ ]:
[10,8,5,2,3,2,1]
对于字符串,可以通过split()函数,将字符串拆分成一个列表,默认以空格分割
例如:
str1= 'I love bai yun fan fan'
str1.split()
Out[ ]:
['I', 'love', 'bai', 'yun', 'fan', 'fan']
3.4 math库 and random库
数学库及其使用
3.4.1.math库
math库中常用的数学函数
函数 | 数学表示 | 含义 |
---|---|---|
圆周率pi | π | π的近似值,15位小数 |
自然常数e | e | e的近似值,15位小数 |
ceil(x) | $[x]$ |
ٔ对浮点数向上取整 |
floor(x) | $[x]$ |
ٔ对浮点数向下取整 |
pow(x,y) | $x^y$ |
计算x的y次方 |
log(x) | lg x | 以e为基的对数, |
log10(x) | $log_{10}x$ |
以10为基的对数, |
sqrt(x) | $\sqrt{x}$ |
平方根 |
math库中常用的数学函数
函数 | 数学表示 | 含义 |
---|---|---|
exp(x) | e的x次幂, | |
degrees(x) | 将弧度值转换成角度 | |
radians(x) | 将角度值转换成弧度 | |
sin(x) | sin x | 正弦函数 |
cos(x) | cos x | 余弦函数 |
tan(x) | tan x | 正切函数 |
asin(x) | arcsin x | 反正弦函数,x∊[-1.0,1.0] |
acos(x) | arccos x | 反余弦函数,x∊[-1.0,1.0] |
atan(x) | arctan x | 反正切函数,x∊[-1.0,1.0] |
随机数库及其使用
random库中常用的函数
函数 | 含义 |
---|---|
seed(x) | 给随机数一个种子值,默认随机种子是系统时钟 |
random() | 生成一个[0,1.0]之间的随机小数 |
randint(a,b) | 生成一个a到b之间的随机整数 |
randform(a,b) | 生成一个a到b之间的随机小数 |
randrange(a,b,c) | 随机生成一个从a开始到b以c递增的数 |
choice(<list>) | 从列表中随机返回一个元素 |
shuffle(<list>) | 将列表中元素随机打乱 |
sample(<list>,k) | 从指定列表随机获取k个元素 |
网友评论