元组
元组和列表的区别
元组:
一系列变量组成的不可变序列容器
一旦创建不可以增删改元素
列表:
一系列变量组成的可变序列容器
为什么搞个元组
列表:预留空间
元组:按需分配
列表的扩容原理(比较浪费空间)
1.开辟更大的空间
2.拷贝原有数据(即指向原有数据)
3.替换引用(即表头指向扩容空间)
元组创建
tuple01 = () #括号内直接放元素
tuple02 = tuple() #括号内可以放可迭代对象 可以理解为强制转换
#例如:
tuple01 = (12,33,4)
list01 = ["a","b","c"]
tuple02 = tuple(list01) #列表转元组
list02 = list(tuple01) #元组转列表
元组只有一个元素时
tuple02 = (1,) #要写逗号
元组括号可省
tuple02 = 1,2,3
元组查询
tiple03 = (”a“,"b","c")
a,b,c = tuple03
#列表也可以 元组用得比较多
索引
tuple02[-1]
切片
tuple02[:2]
循环
for item in tuple02:
print(item)
字典
定义
一系列键值对组成的可变散列容器
*分散存储 没有顺序
*
为什么分散存储?按照算法去找?
进超市不会按照货架顺序去找东西
字典是键值对一一对应
操作
创建
dit01 = {}
dict02 = dict()
dict01 = {101:"a",102:"b"}
#要注意
dict02 = dict([(101,"a"),(102,"b")])
添加 修改
#没有会自动加
dict01[104] = "d"
查找
#根据key找 通常先去判断有没有这个Key
if 106 in dict01:
print(dict01[106])
循环
for key in dict01:
for value in dict01.values():
for item in dict01.items(): #此处item是元组
for k,v in dict01.items():
运用
统计字符串中每个字符出现的次数
str_target = "abcdeacb"
dict_result = {}
for item in str_target:
if item not in dict_result:
dict_result[item] = 1
else:
dict_result[item] += 1
for k,v in dict_result.items():
print("字符%s:%d"%(k,v))
集合 去重复
定义
由一系列补充都的不可变类型变量组成的可变散列容器
相当于只有key没有value的字典
字典和集合存储区别
字典:key找value
哈希运算可以较快key找value
集合:根据哈希算法进行分类,直接存key
哈希运算作用:去重复
集合最大的作用:去重复
创建
set = {}
set01 = set()
set = {"a","b","c"}
list01 = ["A","b","c","A"]
ser03 = set(list01)
print(set03) #输出的顺序每次不一样 说明无序
添加
set01.add("A")
删除
if "A" in set01:
set01.remove("A")
循环
for item in set02:
数学计算(去重之类的操作)
set04 = {1,2,3}
set05 = {2,3,4}
#交集
print(set04 & set05)
#并集
print(set04 | set05)
#补集
print(set04 ^ set05) #{1,4}
print(set04 - set05) #{1}
#子集
set06 = {2,3}
print(set06 < set04)
#超集
print(set06 > set04)
运用
控制台循环录入内容,如果为空则停止,打印所有不重复的内容
set_result = set()
while True:
str_input = input("请输入:")
if str_input == "":
break
set_result.add(str_input)
for item in set_result:
print(item)