容器:列表、元组、字典、集合

元组

元组和列表的区别

元组:
一系列变量组成的不可变序列容器
一旦创建不可以增删改元素
列表:
一系列变量组成的可变序列容器

为什么搞个元组

列表:预留空间
元组:按需分配

在这里插入图片描述

列表的扩容原理(比较浪费空间)

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值