python 数据类型和数据容器
python数据类型主要分为以下七大类:
Numbers(数字) Boolean(布尔) String(字符串) List(列表) Tuple(元组) Dictionary(字典) Set(集合)
Python 的七个标准数据类型中:
不可变数据类型(4 个):Number(数字)、Boolean(布尔)、String(字符串)、Tuple(元组);
可变数据类型(3 个):List(列表)、Dictionary(字典)、Set(集合)。
其中,以下几个也叫做数据容器:
列表(list)、元组(tuple)、字符串(str)、集合(set,frozenset)、字典(dict)
1、数字类型(Numbers)
python的数字类型包括:
int(长整型) float(浮点型) complex(复数)
2、布尔类型(Boolean)
布尔类型是与逻辑相关一种数据类型,只有两个值:True(真)与False(假)
其中布尔类型值可以相加,但一旦相加,类型就会转换为int类型
点击查看代码
a = True
b = False
print(a + b) # 结果为1
3、字符串类型
3.1、字符串特点
不可变性: 字符串是不可变的,一旦创建,就不能直接修改其中的字符。
有序性: 字符串中的字符是有序排列的,可以通过索引访问和操作字符。
3.2、字符串常用操作
点击查看代码
# 定义两个字符串
char1 = "abc145f"
char2 = "hg37ftg"
# 1、索引
print(char2[2]) # 结果是3,索引下标是从0开始
# 2、切片
print(char2[2:6:2]) # 结果是3f,切片格式为[起始下标:结束下标:步长]
# 3、字符串拼接,
# 使用 + 运算符进行字符串拼接
print(char2 + char1) # hg37ftgabc145f
# 使用join 进行拼接
print(','.join(char2)) # h,g,3,7,f,t,g
# 这里注意join 和 + 的区别:
join() 可以将元素按照分隔符「拼接」成新的字符串
格式:
string.join(iterable)
参数iterable:必选,必须是可迭代对象,只能传一个参数,参数可以是字符串,列表,元组,字典。
join() 和+都可以拼接字符串,但 join() 的拼接「效率」比+要快很多:
首先,字符串是「不可变」的,拼接字符串得开辟新的内存空间,用来存储拼接后的字符串。
+ 在拼接字符串时,会先开辟内存空间,把拼接后的字符串放进去,每一个 + 都会开辟一次内存空间。
join() 拼接字符串时,会提前算好需要开辟多大的空间,然后申请内存,把拼接后的字符串放进去,无论拼接多少字符串,都只开辟一次内存空间。
# 4、len(): 获取字符串的长度。
# 5、upper() 和 lower(): 将字符串转换为大写或小写。
char1.upper()
char1.lower()
# 6、replace(): 替换子字符串
print(char2.replace('hg', 'gh')) # gh37ftg
7、字符串还提供了 split()、find()、startwith()、endwith()等方法
4、列表类型(list)
4.1、列表特点
有序性:列表的中的元素是有序排列的,可以通过索引访问和凑在哦元素
可变性:列表是可变的,可以通过索引直接修改元素的值
支持混合数据类型:同一个列表中可以包含不同的数据类型
4.2、列表常用操作
点击查看代码
# 定义一个列表
my_list = [1, 3, 'a', 'b', True]
# 1、添加元素
# append():在列表末尾 添加一个元素
my_list.append(7)
print(my_list) # [1, 3, 'a', 'b', True, 7]
# extend():合并两个列表
my_list.append([7, 'c'])
print(my_list + [7, 'c']) # + 拼接两个列表
print(my_list) # [1, 3, 'a', 'b', True, 7, 'c']
# insert():在指定位置添加元素
my_list.insert(2, 'd')
print(my_list) # [1, 3, 'd', 'a', 'b', True]
# 2、删除元素
# remove():删除第一个匹配到的元素
my_list.remove('a')
print(my_list) # [1, 3, 'b', True]
# pop():删除并返回指定位置的元素,如果不传索引参数,默认是删除最后一个元素
result = my_list.pop(3)
print(my_list) # [1, 3, 'a', True]
print(result) # b
# 3、索引和切片
print(my_list[2]) # 结果是a,索引下标从0开始
print(my_list[:3]) # [1, 3, 'a'],切片格式为[起始下标:结束下标:步长],起始下标可以不写,默认从0开始,步长也可以不写,默认为1
# 4、查找元素在列表中第一个匹配位置的下表
print(my_list.index('b')) # 结果是3
# 5、count()统计元素在列表中出现的次数
# 6、反转列表中的元素
my_list.reverse()
print(my_list) # [True, 'b', 'a', 3, 1]
# 7、sort()对列表中元素进行排序,注意排序时列表中元素类型要相同,否则会报错
my_list.sort()
print(my_list) # TypeError: '<' not supported between instances of 'str' and 'int'
5、元组类型(tuple)
5.1、元组特点
有序性:列表的中的元素是有序排列的,可以通过索引访问元素
不可变性:元组是不可变的,一旦创建,就不能通过索引直接修改元素的值
支持混合数据类型:同一个列表中可以包含不同的数据类型
5.2、元素常用操作
元组常用操作与列表类似,但有一些关键的区别需要注意:
- 元组是不可变的,不能进行修改、添加和删除操作
- 性能优势:在不需要改变元素的情况下,元组性能优于列表
- 作为字典键:元组因为不可变,所以可以作为字典键,而列表不可以
- 解包操作:元组还支持解包操作,例如变量赋值
my_tuple = (1, 2, 3)
a, b, c = my_tuple
注意解包赋值时元组元素的数量必须和变量的数量一致,否则会报错
6、集合(set、frozenset)
6.1、集合特点
- 无序性:集合中的元素都是无序排列的,不能通过索引访问和操作下标值
- 不重复性:集合中的元素是唯一的,不允许重复*
- 集合分为可变集合(set)和不可变集合(frozenset)
6.2、集合常用操作
点击查看代码
# my_set = {1, 2, 'a', 'b'}
# 1、添加元素
# add() 向集合中添加单个元素
my_set.add(4)
print(my_set) # {1, 2, 4, 'a', 'b'}
# update(iterable) 向集合中添加多个元素,参数必须传入可迭代对象,如元组、列表等,如果是字典,只会把key加入到集合中
my_set.update({
"name": "小明",
"age": 22
})
print(my_set) # {'a', 1, 2, 'name', 'age', 'b'}
# 2、删除元素
# remove() 删除指定元素,如果元素不存在,会报错KeyError
my_set.remove('a')
print(my_set) # {1, 2, 'b'}
# discard() 删除指定元素,如果元素不存在,不会报错KeyError
my_set.discard('a')
print(my_set) # {1, 2, 'b'}
# pop() 没有参数,会随机删除并返回一个元素,如果元素不存在,会报错KeyError
my_set.pop()
print(my_set)
注意:创建空集合只能通过set()方式,例如my_set = set(),不能通过my_set = {} ,这是字典
7、字典(dict)
7.1、字典特性
- 无序性:字典是无需的
- 可变性:字典是可变的,用于存储键值对
7.2、字典常用操作
点击查看代码
my_dict = {
'name': '小明',
'age': 22
}
# 1、获取和修改键对应的值
# 获取值
my_dict['name] # 如果键不存在会报错
my_dict.get('name') # 如果键不存在不会报错
# 修改值
my_dict['name'] = '小兰'
# 2、添加和删除键值对
my_dict['gender'] = '男'
del my_dict['gender']
# 3、update()方法
# update()方法用于将一个字典的内容更新到另一个字典中
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print(dict1) # 输出: {'a': 1, 'b': 3, 'c': 4}
注意:从Python 3.9开始,update()方法还可以接受关键字参数来更新字典,这种方式更加灵活。
dict1 = {'a': 1, 'b': 2}
dict1.update(c=5, d=6)
print(dict1) # 输出: {'a': 1, 'b': 2, 'c': 5, 'd': 6}
# 其他常用方法
keys():返回字典中所有的键
values():返回字典中所有的值
items():返回字典中所有键值对
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix