上次我们学习了Python的运算符,还没有学习的同学点击下面的链接学习:
探索Python融合地学:斗之气七段(运算符)-CSDN博客
今天我们要学习Python的数据类型,掌握好各类数据类型,是学好Python的基础。
一、数字类型(Number)
数字类型有整型、浮点型、复数型,以及布尔型(整型的子类)
整型(int):代表整数,没有小数,可以使用int(x)将浮点型数转化为整数;
浮点型(float):代表有小数的实数,可以使用float(x)将整型转为浮点数;
复数型(complex):代表a+bj形式的复数,可以用complex(a,b)表示,采用real命令可以获取实部a,采用imag命令可以获取虚部;
布尔型(bool):用于判断,有True(真)和False(假),其中,True==1,False==0;
我们来举举例子
#整型
a = 10
b = -4
#浮点型
c = -6.08
d = 13.6666
#数据类型转化
e = int(c)
print(e)
print(int(d))#不遵循四舍五入,直接抹掉尾部的小数
f = float(a)
print(f)
#复数
g = 4+2j
h = -3j
print(g.real)#获取实部
print(g.imag)#获取虚部
#查看某个数据的类型
print(type(g))
-----------------------------------------------
#输出结果
-6
13
10.0
4.0
2.0
这里我们特意提到可以采用type来查看数据的类型,g是复数类型,使用type命令后打印出来的结果便是数据的类型。
函数是用来实现特定编程命令的数据,每一种数据类型,都有特定的函数命令可以使用,接下来我们上代码来看看数字类型的函数命令。
(1)常用于数字类型的Python内置函数
#常用于数字类型的内置函数
A = -3.1415926
B = 10
C = 0
print(abs(A))#求绝对值
print(round(A,2))#保留小数位数,round(x,位数)
print(pow(abs(round(A,2)),2))#求幂函数,pow(x,y),表示x^y,与x**y类似
print(divmod(B,3))#求商和余数,divmod(被除数,除数),结果返回商和余数
print(max(A,B,C))#求一组数据序列的最大值,用max
print(min(A,B,C))#求一组数据序列的最小值,用min
print(sum([A,B,C]))#求一组数据的和,用sum
-----------------------------
3.1415926
-3.14
9.8596
(3, 1)
10
-3.1415926
6.8584074
这里面要注意sum命令的符号是sum([....,....,....]),诸君要了解每个函数的用法,可以自己编写代码用用。
(2)随机函数命令
讲到数字,很多时候要考虑其随机性,接下来我们来看看数字类型中,随机函数模块的使用方法。
#随机数函数
import random
print(random.random()) #随机生成0-1中间的浮点数例1
print(random.random()) #随机生成0-1中间的浮点数例2
print(random.randint(0,9)) #随机生成[0-9]闭区间的整数例1
print(random.randint(0,9)) #随机生成[0-9]闭区间的整数例2
print(random.randrange(1,9,2)) #按照2为步长,随机生成1-9中间的某个整数[1,3,5,7,9]
print(random.uniform(2.4,3.5)) #随机生成[2.4,3.5]闭区间的浮点数
print(random.choice([1,3,5,8,13,21])) #从斐波那契子数列中返回一个随机数,choice用于从已知的时间序列数据中随机挑选数
X = [1,2,3,4,5,6]
Y1 = random.choices(X,k=4) #代表从X列表中随机抽取K个数
print("有放回抽取:",Y1)
Y2 = random.choices(X,weights = [1,1,1,3,1,3],k=3) #对列表的每个数字赋予权重,这里我们给4和6两个数字赋予30%的抽取权重
print("增加概率权重的有放回抽取:",Y2)
Y3 = random.sample(X,4)
print("无放回抽取:",Y3)
random.shuffle(X) #打乱列表顺序
print("打乱后列表顺序为:",X)
#随机生成1-100以内的4个整数,采用for循环即可
for _ in range(4):#for _ in...,中间的_符号前后要有空格,不能写成for_in range(4)
print(random.randint(1,100),end=" ") #这里要注意for循环的写法
-------------------------------------------------------------------
#结果
0.21691686046184666
0.8337580973455041
7
1
3
3.1060365769483473
3
有放回抽取: [5, 5, 3, 2]
增加概率权重的有放回抽取: [3, 4, 5]
无放回抽取: [6, 1, 4, 2]
打乱后列表顺序为: [6, 4, 3, 5, 2, 1]
20 60 66 13
上面的代码中,我们提到了random模块的很多用法,大家要搞清楚后面说的有放回抽取和无放回收取概念,这个是学习概率的时候会学到的。
讲到这个,我就想起来大学老师喜欢使用随机数来点人回答问题,因此现在布置一个任务:
现在你是一名老师,请你从学号为202124801165-202124801197的区间范围内,抽取三位同学回答问题,应该怎么做?
#第一步,导入随机数模块
import random
#第二步,不可重复地抽取生成给定学号区间的整数
print("学号为:",random.sample(range(202124801165,202124801197),3))
-----------------
#结果
学号为: [202124801177, 202124801180, 202124801191]
这是一个无重复的抽取问题,我们采用sample就可以完成,等到后面我们来看看更复杂的抽取问题,比如要抽取名字,回答对应难度的问题应该怎么做?
(3)数学函数模块
数学函数作为一个内置模块,可以进行调用,直接进行一些有关数字类型的运算。
import math
print("计算4的算术平方根:",math.sqrt(4))
print("计算以8为底2的对数:",math.log(8,2))
print("计算Π:",math.pi)
print("计算sin90°:",math.sin(math.pi/2))
print("向下取整:",math.floor(4.3))
print("向上取整:",math.ceil(4.3))
print("-"*20)
--------------------------------------------
计算4的算术平方根: 2.0
计算以8为底2的对数: 3.0
计算Π: 3.141592653589793
计算sin90°: 1.0
向下取整: 4
向上取整: 5
更多关于math的数学命令大家可以自己去探索。
二、字符串类型(String)
正常生活中,除了需要使用数字,还需要使用文本。在编程语言中,我们把文本这一类的数据类型称之为字符串,接下来我们看看字符串的用法。
(1)字符串的基本命令
#创建字符串,可以用" ",也可以用' '
s1 = "三年备忘录"
s2 = '薛尖尖'
print("字符串1:",s1)
print("字符串2:",s2)
#拼接字符串,使用+
s3 = "和"
s4 = "是好朋友"
print("结论:",s1+s3+s2+s4)
#字符串复制,使用*
print("复制三个:",s2*3)
#获取字符串长度,使用len命令
print("字母个数为:",len(s1))
#获取字符串内的单个字符,使用位置索引
print("s1的第一个字是:",s1[0]) #注意,字母的下标是从0开始的,首位下标是0
print("s1的第三个字是:",s1[2]) #因从0开始,所以第三个位置下标是2
print("s1的最后一个字是:",s1[4]) #三年备忘录一共五个字,最后一个字下标是4
print("s1的最后一个字是:",s1[-1]) #负数表示倒数几个字符,这里同样表示最后一个字符
#字符串切片
print("s1的前三个字是:",s1[0:3])
print("s2步数切片是:",s2[::2])
-----------------------------------------
#结果
字符串1: 三年备忘录
字符串2: 薛尖尖
结论: 三年备忘录和薛尖尖是好朋友
复制三个: 薛尖尖薛尖尖薛尖尖
字母个数为: 5
s1的第一个字是: 三
s1的第三个字是: 备
s1的最后一个字是: 录
s1的最后一个字是: 录
s1的前三个字是: 三年备
s2步数切片是: 薛尖
这里面我们要尤其注意最后一个切片操作,运用起来有的时候很方便,一般遵循左闭右开的原则,像我们举的例子print("s1的前三个字是:",s1[0:3]) ,这里我们要取前三个字符,也就是位置下标是0、1和2的字符,那么我们要写成[0:3],此时切片从0开始,取到2结束,3并不会取,是开区间。第二个例子print("s2步数切片是:",s2[::2]),这里我们是以位置下标步长加+为原则取字符,s2字符串有三个字,薛的下标是0,加2是下标为2,为尖,因此切片取出的为薛尖。
(2)常用字符串的方法
#字符串的操作命令
S1 = "geography"
print("全部大写:",S1.upper()) #大写命令使用upper
S2 = "BEIJING"
print("全部小写:",S2.lower()) #小写命令使用lower
print("前缀为geog:",S1.startswith("geog")) #判断前缀是否以...为开头
print("后缀为phy:",S1.endswith("phy")) #判断后缀是否以...开头
print("字符替换:",S1.replace(S1[3:9],"metry")) #replace(a,b),把子字符串a变成b
S3 = "What make you so beautiful"
print("字符分割:",S3.split(" ")) #按照空格分割,返回列表
print("判断在:","What" in S3) #判断某字符在字符串里面
print("判断不在:","I" not in S3) #判断某字符不在字符串里面
-----------------------------
全部大写: GEOGRAPHY
全部小写: beijing
前缀为geog: True
后缀为phy: True
字符替换: geometry
字符分割: ['What', 'make', 'you', 'so', 'beautiful']
判断在: True
判断不在: True
以上是一些常用的字符串命令,更多内容请自行探索,也欢迎评论区交流。
(3)格式化字符串
格式化字符串的意思指的是将变量插入到已知的字符串中,在3.6版本以上的Python中,我们使用以下的方法来实现:
#格式化字符串,插入名字和年龄
name = "禾穗新芽"
age = 22
print(f"我的好朋友是{name},他的年龄是{age}")
--------------------
#结果
我的好朋友是禾穗新芽,他的年龄是22
通过f"...{变量1}....{变量2}"的形式,我们可以把特定的变量插入到这句话中。
三、元组类型(Tuple)
元组类型是一类存储多种不同数据的数据类型,他具有不可变性,一旦创建,就不能够进行更改,是一种绝对固定的数据类型,如果你的数据是不允许被更改的,那我们可以使用元组进行存储。
接下来,我们看看元组的使用方法:
(1)创建元组
创建元组是还是有讲究的,分为多要素元组,混合要素元组和单要素元组。
#元组的基本命令
t1 = (1,3,5,6,9,13,21) #创建多要素元组
t2 = (1,"zscurry30",3,"好的") #创建混合多要素元组
t3 = (1,) #创建单要素元组,注意格式,不能写成(1)
t4 = (1)
#使用type对比一下
print("类型1:",type(t3)) #加了逗号是元组
print("类型2:",type(t4)) #不加逗号1是整数,数字类型
--------------------------
类型1:
类型2:
从这里我们可以看出不使用逗号和使用逗号,在元素的创建上还是有区分的。
(2)操作命令
与数字类型和字符串类型类似,元组也有一些常规的操作命令我们需要掌握:
#元组的基本命令
t1 = (1,3,5,6,9,13,21)
print("元组长度:",len(t1)) #识别元组长度
t2 = (1,"zscurry30",3,"好的")
print("元组拼接:",t1+t2) #拼接两个元组
t3 = (1,)
print("重复元组:",t3*3) #同一个元组重复三次
#循环遍历元组
for i in t2:
print(i,end = " ")
---------------------------------------
元组长度: 7
元组拼接: (1, 3, 5, 6, 9, 13, 21, 1, 'zscurry30', 3, '好的')
重复元组: (1, 1, 1)
1 zscurry30 3 好的
好的,今天的学习就到这里,如果对你有帮助,不要忘记了点赞和关注哦,希望大家勤奋修炼,终有一天会站在大陆顶峰!