目录
Python语言包括九种基本的数据类型,我们把它分为以下三类。
数值类型 | 整数、浮点数、复数 |
字节类型 | 字符串、字节串 |
组合类型 | 集合、元组、列表、字典 |
一、数值类型
1 整数类型
- 与数学中的整数含义相同,无取值范围;
- 整数包括二进制、八进制、十进制、十六进制等4种表示形式;
- 二进制:以0b或0B开头:0b1101,-0B10;
- 八进制:以0o或0O开头:0o456,-0O789;
- 十进制:123,-321,0;
- 十六进制:以0x或0X开头:0x1A,-0X2B。
- 如:0b1010 = 0o12 = 10 = 0xa
代码实例
2 浮点数类型
- 与数学中的实数含义相同,带有小数及小数的数字,存在取值范围;
- 浮点数包括常规方法和科学计数法2种方式表示;
- 科学计数法使用字母e或E作为幂的符号,以10位基数,格式:<a>e<b> 表示 a*;
- 如:0.0043 = 4.3e-3 ; 98000000.0 = 9.8E7
- 不确定尾数问题:浮点数直接运算,可能产生不确定尾数。不确定尾数问题来源于浮点数在计算机中表示不精确的实际情况,广泛存在于编程语言中。可以使用round()辅助浮点数运算,消除不确定尾数。
代码实例1
print(0.1 + 0.2) # 不确定尾数问题
round(x , b):对x四舍五入,d是小数截取位数
print(round(0.1 + 0.2,1) # 消除不确定尾数
代码实例2
3 复数类型
- 与数学中的复数概念相同,定义 j = ,复数表示为 a+bj;
- z = a+bj,a是实部,b是虚部,a和b都是浮点数;
- z.real获得z的实部,z.imag获得z的虚部。
代码实例
二、字符串类型
我们要知道 1 和 "1"是两种不同的数据类型,前者是一个数字,可以进行加减乘除的操作,而后者则是个单纯的字符串,也就是常说的文本内容。字符串的一个特点就是在它的两旁有单引号或者双引号。
1 字符串类型
(1)字符串定义
- 字符串:由0个或多个字符组成的有序字符序列,由一对单引号(' ')或一对双引号(" ")表示,可对字符进行索引,用序号进行访问。
- 表示方法:由一对单引号或双引号表示,仅表示单行字符串;由一对三单引号或三双引号表示,可表示多行字符串。
(2)字符串的序号
代码实例
(3)字符串的使用
- 使用[ ] 获取字符串中一个或多个字符。
- 字符串索引:s[N] 通过序号获取单个字符。
- 字符串切片:s[M:N] 获取M到N(不含)子串,使用[M: N :K]根据步长对字符串切片,使用[::-1]对字符串进行逆序。其中,M缺失表示至开头,N缺失表示至结尾。
代码实例
(4)字符串处理函数
函数及使用 | 描述 |
len(x) | 长度,返回字符串x的长度 |
str(x) | 任意类型x所对应的字符串形式 |
hex(x)或oct(x) | 整数x的十六进制或八进制小写形式字符串 |
chr(x) | x为Unicode编码,返回其对应的字符 |
ord(x) | x为字符,返回其对应的Unicode编码 |
代码实例
(5)字符串处理方法
方法及使用 | 描述 |
str.lower()或str.upper() | 返回字符串的副本,全部字符小写/大写 |
str.split(sep=None) | 返回一个列表,由str根据sep被分割的部分组成 |
str.count(sub) | 返回子串sub在str中出现的次数 |
str.replace(old,new) | 返回字符串str的副本,所有old子串被替换为new |
str.center(width[,fillchar]) | 字符串str根据宽度width居中,fillchar可选 |
str.strip(chars) | 从str中去掉在其左侧和右侧chars中列出的字符 |
str.join(iter) | 在iter变量除最后元素外每个元素后增加一个str |
代码实例
(6)常用格式字符符号
格式字符符号 | 说明 |
%s | 格式化字符串 |
%r | 字符串 (采用repr()的显示) |
%c | 单个字符 |
%d | 格式化十进制整数 |
%i | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数 (基底写为e),用科学计数法格式化浮点数 |
%E | 指数 (基底写为E) |
%f、%F | 浮点数 |
%g | 指数(e)或浮点数 (根据显示长度) |
%G | 指数(E)或浮点数 (根据显示长度) |
%% | 一个字符% |
代码实例
name = input("请输入姓名:")
sex = input("请输入性别:")
age = input("请输入年龄:")
print("你的姓名是%s,性别%s,年龄是%d" % (name, sex, int(age)))
(7)字符串类型的格式化
格式化是字符串处理方法的一种,进行字符串格式的表达。
输入格式:<模板字符串>.format(<逗号分割的参数>)
代码实例
a = 3.5
b = 2.8
c = a + b
print("{:.2f}".format(c)) # 保留两位小数
>>> 6.30
2 字节串类型(很少用到)
- 字节串是计算机存储空间的表达;
- 由0个或多个字节组成的有序序列,每字节对应值为0-255;
- 字节串由前导符b或B与一对单引号或双引号表示,如:b"a\xf6";
- 0-255间非可打印字符用\xNN方式表示,N是一个十六进制字符。
- 什么时候使用字节串?
- 字节串只有在处理跟内存相关的内容或者我们处理的内容和字节的数量密切相关的时候才用字节串。
三、组合类型
1 集合类型:一维数组的集合
(1)定义
集合:多个元素的无序组合,使用大括号{}表示,元素间用逗号分隔,建立非集合使用{}或set()函数。
基本功能:集合的两个基本功能分别是去重和成员测试。
(2)特点
- 无序:元素间没有顺序,因此,要求元素不能相同,元素必须是不可变类型。
- 非一致性:元素类型可以不同。
- 无索引:不能对某个元素进行定点索引,可以遍历或随机获取元素。
(3)集合操作符
操作符 | 说明 |
S | T | 并集 |
S & T | 交集 |
S - T | 差集 |
S ^ T | 补集 |
S <= T 或 S < T | 返回True或False,判断S和T的子集关系 |
S >= T 或 S > T | 返回True或False,判断S和T的包含关系 |
(4)集合处理方法
方法 | 说明 |
S.add(x) | 如果x不在集合S中,将x加入S中 |
S.discard(x) | 移除S中x元素,如果x不在S,不报错 |
S.remove(x) | 移除S中x元素,若x不在S中,产生keyError异常 |
S.clear() | 清除S中的所有元素 |
S.pop() | 随机返回S中的一个元素,更新S,所S为空,产生keyError异常 |
S.copy() | 返回集合S的一个副本 |
len(s) | 返回集合S中元素个数 |
x in S | 判断x是否在S中 |
x in not S | 判断x是否不在S中 |
set(x) | 将其他类型变量x转变为集合类型,也可以用于数据去重 |
(5)代码实例
a = {'丁一', '丁一', '王二', '张三', '李四', '赵五'}
print(set(a)) # 通过set()函数可以获得一个集合,集合一个主要特点,就是用来去重
>>> {'丁一', '王二', '赵五', '张三', '李四'}
2 元组类型(序列)
Python中的元组与列表类似,是序列类型的一种,不同之处在于元组的元素一旦创建不能修改。元组使用小括号()表示,元素间用逗号分隔,小括号可以省略
(1)元组的定义
元组创建很简单,只需要在括号内添加元素,并使用逗号分开即可,具体代码如下:
tup1 = (36)
tup2 = (36,)
tup3 = ("hello")
tup4 = ("hello",)
print("tup1 = (50)的数据类型是:",type(tup1))
print("tup2 = (50,)的数据类型是:",type(tup2))
print("\ntup3 = (“hello”)的数据类型是:",type(tup3))
print("tup4 = (“hello”,)的数据类型是:",type(tup4))
(2) 访问元组中的值
可以使用下标索引来访问元组中的值,也可以使用中括号的形式截取字符,还可以利用for循环语句来遍历元组中的值。具体代码如下:
tup1 = ("book", "desk", "bag", "chair", "dog", "cat", "panda", "sheep")
# 使用下标索引来访问元组中的值
print("元组中的第二个值,tup1[1]: ", tup1[1])
# 使用中括号的形式截取字符
print("元组中的第二和第五个值,tup1[1:5]: ", tup1[1:5])
# 利用for循环语句来遍历元组中的值
print("\n利用for循环语句来遍历元组中的值")
for i in tup1:
print(i)
(3)元组的连接
元组中的元素是不允许修改的,但可以利用“+”号对元组进行连接组合。具体代码如下:
tup1 = ("张三","王芳","李四")
tup2 = ('男', '女',"男")
tup3 = (96, 89, 97)
tup4 = tup1 + tup2 + tup3 # 创建一个新的元组
print("连接元组:", tup4)
(4)元组的删除
元组中的元组是不允许删除的,但我们可以使用del语句来删除整个元组。具体代码如下:
tup = ("张三", "王芳", "李四")
print(tup)
del tup
print("删除后的元组 tup : ")
print(tup)
(5)元组的函数
元组的函数名 | 含义 |
len(tuple) | 返回元组元素个数 |
max(tuple) | 返回元组元素的最大值 |
min(tuple) | 返回元组元素的最小值 |
tuple(seq) | 将列表转换为元组 |
代码实例
tuple1 = (5, 4, 8, 12, 16, 38, 999, 1562)
tuple2 = ("who", "what", "whose", "when")
print("元组中元素的最大值:", max(tuple1))
print("元组中元素的最小值:", min(tuple1))
print("元组中元素的最大值:", max(tuple2))
print("元组中元素的最小值:", min(tuple2))
print("\n元组中元素的个数:", len(tuple1))
print("\n元组中元素的个数:", len(tuple2))
print("\n把元组转换成列表,并显示:", list(tuple1))
print("把列表为元组,并显示:", tuple(list(tuple1)))
3 列表类型(序列)
我们可以对列表这样去理解, 就把列表当成一个大桶, 当我们有一堆东西需要找个地方临时存放在一起, 以便后续进行排序, 筛选,提取等操作时, 就弄一个列表, 先放进去。
- 序列类型的一种,元素间的有序组合,类型不限,创建后可以随时被修改
- 列表使用中括号[]表示,元素间用逗号分隔,括号不可省略
- 列表可以将多个数据有序地组织在一起,更方便调用
- 如:ls = ["cat", "tiger", 1024]
(1)常用函数
函数名 | 含义 |
len(list) | 返回列表元素个数 |
max(list) | 返回列表元素的最大值 |
min(list) | 返回列表元素的最小值 |
list(seq) | 将元组转换为列表 |
id(list) | 获取列表对象的内存地址 |
(2)常用方法
常用方法 | 含义 |
list.append('baidu') | 追加"baidu"元素 |
list.insert(1,'baidu') | 在列表第一个位置插入“baidu”元素 |
list.index(x) | 返回列表中第一个值为x的元素的索引 |
list.remove(v) | 从列表中移除第一次找到的值v |
list.pop([i]) | 从列表中指定位置删除元素。并将其返回。 |
list.reverse() | 倒排列表中的元素 |
list.count(X) | 计数,返回x在列表中出现的次数 |
list.sort(key = None, reverse = False) | 对列表中的元素进行适当排序, reverse = True为降序, reverse = False为升序(默认) |
del list[2] | 删除列表第三个元素 |
del list | 删除列表 |
(3)代码实例
- 创建列表
class1 = ['丁一', '王二', '张三', '李四', '赵五']
print(class1)
>>> ['丁一', '王二', '张三', '李四', '赵五']
# 列表的元素类型不限
list1 = [1, '123', [1, 2, 3]]
print(list1)
>>> [1, '123', [1, 2, 3]]
- 遍历列表
class1 = ['丁一', '王二', '张三', '李四', '赵五']
for i in class1: # 使用for循环遍历列表
print(i)
- 列表元素计数
# 统计列表的元素个数的函数:len函数
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = len(class1)
print(a)
>>> 5
- 列表元素调用
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = class1[1] # 调取列表中第二个元素“王二”
print(a)
>>> 王二
- 列表切片
# 选取多个列表元素的方法:列表切片
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = class1[1:4] # 选取列表中第二个和第四个元素,列表切片左闭右开
print(a)
>>> ['王二', '张三', '李四']
b = class1[1:] # 选取从第二个元素到最后
c = class1[-3:] # 选取从列表倒数第三个元素到最后
d = class1[:-2] # 选取倒数第二个元素前的所有元素(因为左闭右开,所以不包含倒数第二个元素)
print(b)
>>> ['王二', '张三', '李四', '赵五']
print(c)
>>> ['张三', '李四', '赵五']
print(d)
>>> ['丁一', '王二', '张三']
- 增加列表元素
# 列表增加元素的办法:append方法
score = []
score.append(80)
print(score)
>>> [80]
score = []
score.append(80)
score.append(90)
score.append(70)
print(score)
>>> [80, 90, 70]
- 列表转换成字符串
# 列表转换成字符串,这个先了解下即可,很远之后才用的上
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = ",".join(class1)
print(a)
>>> 丁一,王二,张三,李四,赵五
(4)代码实例:数字排序
list1 = [] # 定义一个空列表
for i in range(8): # 利用for循环向列表中添加数据
mynum = int(input("请输入要排序的数字(一共8个数字):"))
list1.append(mynum)
list1.sort() # 默认为升序
print("\n从小到大排序数字:", list1)
list1.sort(reverse=True) # 设置排序为降序
print("\n从大到小排序数字:", list1)
print("\n数字中的最大值:", max(list1))
print("数字中的最小值:", min(list1))
4 字典类型
(1) 字典介绍
- 字典是另一种存储数据的格式。字典的每个元素都由两部分组成(列表的每个元素只有一个部分),前一部分称为键,后一部分称为值,中间用冒号相连。
- 字典类型是键值对的集合,反映了数据之间的映射关系
- 字典使用大括号{}表示,键值间用冒号分隔,键值对间用逗号分隔
- 映射是一种键(索引)和值(数据)的对应;
语法格式
字典名 = {<键1>:<值1>, <键2>:<值2>, ..., <键n>:<值n>}
d = {"中国": "北京", "美国": "华盛顿", "法国": "巴黎"}
(2)通过键检索值
(3) 常用方法
常见方法 | 含义 |
d.keys() | 返回一个列表,列表包含字典的所有键的信息 |
d.values() | 返回一个列表,列表包含字典的所有值的信息 |
d.items() | 返回一个列表,列表元素为字典的键和值构成的元组 |
d.len(d) | 返回字典的长度,即字典元素的数目 |
d.str(d) | 输出字典可打印的字符串 |
d.copy() | 复制一个字典 |
d.zip() | 合并列表组成字典 |
d.update() | 将一个字典的元素添加到另一个字典中 |
d.clear() | 删除字典中全部的键值对,使之变为空字典 |
del d[k] | 删除字典d中键k对应的值 |
k in d | 判断键k是否在字典d中 |
len(d) | 返回字典的个数 |
(4)代码实例
(5) 遍历字典
- 字典名["键名"]提取值
# 字典名["键名"]提取值
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
score = class1['王二']
print('score:',score)
>>> score: 95
- 遍历字典内容
# 遍历字典内容1
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
for i in class1: # 这个i代表的是字典中的键,也就是丁一、王二麻子等
print('class1:',i,class1[i])
# 遍历字典内容2
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
for i in class1: # 这个i代表的是字典中的键,也就是丁一、王二麻子等
print(i + ':' + str(class1[i])) # 注意要str把85等数字转换成字符串,才能进行字符串拼接
# 遍历字典内容3
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
a = class1.items()
print(a)
- 删除字典键值对
del class1['丁一'] # 删除字典键值对
print(class1)