五大容器总结对比
可以存储多个元素的python数据类型就是数据容器
五大容器特点对比
列表list[] | 元组tuple() | 字符串str() | 集合set{} | 字典dict{} |
---|---|---|---|---|
存储多个元素 | 存储多个元素 | 存储多个元素 | 存储多个元素 | 存储多个元素 |
支持for循环 | 支持for循环 | 支持for循环 | 支持for循环 | 支持for循环 |
可以存储不同类型数据 | 可以存储不同类型数据 | 只可以存储字符串元素 | 只能存储不可变类型元素 | key只能存储不可变类型元素,value可以是任意数据 |
支持修改 | 不支持修改 | 不支持修改 | 支持修改 | 支持修改 |
支持重复 | 支持重复 | 支持重复 | 不支持重复 | 不支持重复 |
支持下标索引 | 支持下标索引 | 支持下标索引 | 不支持下标索引 | 不支持下标索引 |
支持while循环 | 支持while循环 | 支持while循环 | 不支持while循环 | 不支持while循环 |
五大容器通用操作
知识点:
通用for循环 | 因为for循环又叫遍历循环,最大特点是数据集需要提前存在 |
---|---|
通用len功能 | 求容器中元素的个数,注意字典默认一个键值对是一个元素 |
通用max功能 | 求容器中元素最大值,注意字典默认操作都是键key |
通用min功能 | 求容器元素最小值,注意字典默认操作都是键key |
通用排序功能 | sorted(容器,[revserse =True])默认把指定容器中元素放到列表中排序,其中revserse =True排序后·反转 |
通用枚举功能 | enumerate(容器)自动根据容器元素生成0开始的编号 |
通用for循环
#定义列表
list1 = ['d','a','b','c','e']
#定义元组
tuple1 = ('d','a','b','c','e')
#定义字符串
str1 = 'dabce'
#定义集合
set1 = {'d','a','b','c','e'}
#定义字典
dict1 = {'d':1,'a':2,'b':3,'c':4,'e':5}
#列表for循环
for e in list1:
print(e)
print('_______________')
#元组for循环
for e in list1:
print(e)
print('_______________')
#字符串for循环
for e in str1:
print(e)
print('_______________')
#集合for循环
for e in set1:
print(e)
print('_______________')
#字典for循环
for e in dict1:
print(e)
print('_______________')
通用统计功能
#定义列表
list1 = ['d','a','b','c','e']
#定义元组
tuple1 = ('d','a','b','c','e')
#定义字符串
str1 = 'dabce'
#定义集合
set1 = {'d','a','b','c','e'}
#定义字典
dict1 = {'d':1,'a':2,'b':3,'c':4,'e':5}
#通用len():求元素个数
print(len(list1))
print(len(tuple1))
print(len(str1))
print(len(set1))
print(len(dict1))
print('_______________')
#通用max():求最大值
print(max(list1))
print(max(tuple1))
print(max(str1))
print(max(set1))
print(max(dict1))
print('_______________')
#通用min():求最小值
print(min(list1))
print(min(tuple1))
print(min(str1))
print(min(set1))
print(min(dict1))
print('_______________')
#通用sorted():,默认从小到大升序排序,默认都放到列表中返回
print(sorted(list1))
print(sorted(tuple1))
print(sorted(str1))
print(sorted(set1))
print(sorted(dict1))
print('_______________')
#通用sorted(reverse = True):默认从小到大升序排序,默认都放到列表中返回
print(sorted(list1,reverse=True))
print(sorted(tuple1,reverse=True))
print(sorted(str1,reverse=True))
print(sorted(set1,reverse=True))
print(sorted(dict1,reverse=True))
print('_______________')
通用枚举功能:
#定义列表
list1 = ['d','a','b','c','e']
#定义元组
tuple1 = ('d','a','b','c','e')
#定义字符串
str1 = 'dabce'
#定义集合
set1 = {'d','a','b','c','e'}
#定义字典
dict1 = {'d':1,'a':2,'b':3,'c':4,'e':5}
#列表for循环
for i,e in enumerate(list1):
print(i,e)
print('_______________')
#元组for循环
for i,e in enumerate(tuple1):
print(i,e)
print('_______________')
#字符串for循环
for i,e in enumerate(str1):
print(i,e)
print('_______________')
#集合for循环
for i,e in enumerate(set1):
print(i,e)
print('_______________')
#字典for循环
for i,e in enumerate(dict1):
print(i,e)
print('_______________')
通用拆包功能
#打包:把多个元素放到容器中的过程
#定义列表
list1 = [1,2,3]
#定义元组
tuple1 = (1,2,3)
#定义字符串
str1 = '123'
#定义集合
set1 = {1,2,3}
#定义字典
dict1 = {1:1,2:1,3:1}
#拆包:把容器元素依次取出复制给对应变量的过程
#注意:拆包应用场景一般用于容器有几个元素的情况
a,b,c =list1
print(a,b,c)
a,b,c =tuple1
print(a,b,c)
a,b,c =str1
print(a,b,c)
a,b,c =set1
print(a,b,c)
a,b,c =dict1
print(a,b,c)
"""
小面试题:两个变量交换值
已知a记录10,b记录20,要求把a和b的值交换
"""
#定义数据
a =10
b =20
print(a,b)
#方式1:借助临时变量
# temp = a
# a = b
# b = temp
# print(a,b)
#方式2:先打包再拆包
b,a =a,b
print(a,b)
四大容器类型转换:
知识点:
str(x):其他数据转化为字符串类型
list(x):其他数据转化为列表类型
set(x):其他数据转化为集合类型
tuple(x):其他数据转化为元组类型
set(x):去除字符串两端引号 注意:不能随便去除,否则报错
示例:
#1.需求1:定义字符串”abcde“
str1 ='abcdeabc'
#2.需求2:字符串每个字符用列表存储起来
list1 = list(str1)
print(list1)
#3.需求3:去除列表中重复数据
set1 =set(list1)
print(set1)
new_list1 = list(set1)
print(new_list1)
#4.需求4:要求数据不能修改
tuple1 = tuple(new_list1)
print(tuple1)
print('________________')
#定义列表
list1 = ['d','a','b','c','e']
#定义元组
tuple1 = ('d','a','b','c','e')
#定义集合
set1 = {'d','a','b','c','e'}
#定义字典
dict1 = {'d':1,'a':2,'b':3,'c':4,'e':5}
#注意:任意类型都能转换为字符串类型,本质就是用引号包裹起来
s1 = str(list1)
print(s1, type(s1)) # "['d', 'a', 'b', 'c', 'e']"
s2 = str(tuple1)
print(s2, type(s2)) # "('d', 'a', 'b', 'c', 'e')"
s3 = str(set1)
print(s3, type(s3)) # "{'d', 'a', 'b', 'c', 'e'}"
#能不能直接去除引号,回归本身?eval去除字符串两端引号
list2 =eval(s1)
print(list2,type(list2))
tuple2 =eval(s1)
print(tuple2,type(tuple2))
set2 =eval(s1)
print(set2,type(set2))
# 注意: eval函数不要随意使用
print(eval("10"), type(eval("10"))) # 自动转换为整数10
print(eval("3.14"), type(eval("3.14"))) # 自动转换为浮点数3.14
print(eval("abc")) # 报错NameError: name 'abc' is not defined
三大序列通用符号
知识点:
+:通用拼接符号,产生新的序列
=:通用复制拼接符号,产生新的序列
示例:
# 定义列表
list1 = ['d', 'a', 'b', 'c', 'e']
# 定义元组
tuple1 = ('d', 'a', 'b', 'c', 'e')
# 定义字符串
str1 = 'dabce'
#演示通用拼接符号:+ 产生新的序列
print(list1 +['f'])
print(tuple1 +('f',))
print(str1 +'f')
#演示通用复制拼接符号:*产生新的序列
print(list1 *3)
print(tuple1 *3)
print(str1 *3)