07.元组、字典、集合

01.元组 tuple

1.1.元组基本格式

元组格式:
tua = (元素1,元素2,元素3…)
注意:
定义元组时,如果只有一个元素,末尾要加逗号,多个元素用","隔开
不同元素也可以是不同的数据类型

tua = (1,2,3,4,5)
print(type(tua)) #<class 'tuple'>

tua2 = (1,2,3,'a',[123])
print(type(tua2)) #<class 'tuple'>

tub = (1)
print(type(tub)) #<class 'int'> 只有一个元素的时候,末尾必须加上, 否则返回唯一的值的数据类型
tub2 = (1,)
print(type(tub2)) #<class 'tuple'>

tub3 = ()
print(type(tub3)) #<class 'tuple'> 定义空元组

1.2.元组与列表的区别

1.元组只有一个元素,末尾必须加逗号,列表不需要
2.元组只支持查询操作,不支持增删改操作

在这里插入图片描述

index:从元组中找出某个对象第一个匹配项的索引位置,如果不在元组中会报一个异常。
count:统计某个元素在元组中出现的次数。

tua = (1,2,3)
# print(tua[1]) #元组也有下标,从左往右,从0开始 2
# #tua[2] = 'a' #报错,元组不支持修改操作
# #count() index() len()跟列表的用法相同
print(tua.count(1)) #1 返回1出现次数 1次
print(tua.index(1)) #0 返回索引
print(tua.index(2)) #1 返回索引
print(len(tua)) #3 元组中元素的长度
print(tua[1:]) #(2, 3) 切片

1.3.应用场景

(1)函数的参数和返回值
(2)格式化输出后面的()本质上就是一个元组

name = 'bingbing'
age = 18
print("%s的年龄是%d"%(name,age)) #bingbing的年龄是18
info = (name,age)
print("%s的年龄是%d"%info) #bingbing的年龄是18

(3)数据不可以被修改,保护数据的安全

02.字典及其常见操作

2.1.字典基本格式

基本格式:字典名 = {键1:值1,键2:值2…}
键值对形式保存,键和值之间用":"隔开,每个键值对之间用”,“隔开。
字典格式:

dic = {'name':'six','age':18}

注意:
键值对形式保存,键具有唯一性,但值可以重复。

dic = {'name':'six','age':18}
print(type(dic)) #<class 'dict'>

dic2 = {'name':'bingbing','name':'susu'} #{'name': 'susu'} #不会报错,键名重复,前面的值会被后面的值覆盖
print(dic2)

dic3 = {'name':'bingbing','name2':'bingbing'} #{'name': 'bingbing', 'name2': 'bingbing'}
print(dic3)

2.2.字典常见操作

在这里插入图片描述

2.2.1 查看元素

变量名[键名]

dic = {'name':'bingbing','age':18}
#print(dic[2]) #不可以根据下标,字典中没有下标,查找元素需要根据键名,键名相当于下标
print(dic['age']) #18
#print(dic['sex']) #报错,键名不存在

变量名.get(键名)

dic = {'name':'bingbing','age':18}
print(dic.get('name')) #bingbing
print(dic.get('sex')) #None,键名不存在
print(dic.get('score','不存在')) #不存在,键名不存在,返回自己设置的值

2.2.2 修改元素

变量名[键名] = 值

dic = {'name':'bingbing','age':18}
dic['age'] = 20 #列表通过下标修改,字典通过键名修改 {'name': 'bingbing', 'age': 20}
print(dic)

2.2.3 添加元素

变量名[键名] = 值
注意:键名存在就修改,不存在就新增

dic = {'name':'bingbing','age':18}
dic['score'] = 80 #{'name': 'bingbing', 'age': 18, 'score': 80}  此时没有score键,新增进字典
print(dic)
dic['score'] = 90 #{'name': 'bingbing', 'age': 18, 'score': 90}  此时已经有score键,修改score对应的值
print(dic)

2.2.4 删除元素

del
删除整个字典 del 字典名

dic = {'name':'bingbing','age':18}
del dic #报错,已经被删除了,找不到这个字典
print(dic)

在这里插入图片描述

删除指定键值对,键名不存在就会报错 del 字典名[键名]

dic = {'name':'bingbing','age':18}
#del dic #报错,已经被删除了,找不到这个字典
del dic['age'] #{'name': 'bingbing'}
#del dic['score'] #KeyError: 'score' 没有指定的键就会报错
print(dic)

clear()
clear():清空整个字典里面的东西,但保留了这个字典

dic = {'name':'bingbing','age':18}
dic.clear() #{}
dic['score'] = 80 #{'score': 80}
print(dic)

pop()
pop():删除指定键值对,键不存在就会报错

dic = {'name':'bingbing','age':18}
dic.pop('age') #{'name': 'bingbing'}
#dic.pop('score') #KeyError: 'score' 报错,不存在键名
#dic.pop() #报错,没有指定键名
dic.popitem() #3.7之前的版本是随机删除一个键值对,3.7之后的版本默认删除最后一个键值对
print(dic)

2.3字典常见操作二

在这里插入图片描述

2.3.1 len()求长度

dic = {'name':'bingbing','age':18}
print(len(dic)) #2 字典中有2个键值对
li = [1,2,3,4,5]
print(len(li)) #5
st = 'star'
print(len(st)) #4

2.3.2 keys() 返回字典里面包含的所有键名

dic = {'name':'bingbing','age':18}
print(dic.keys()) #dict_keys(['name', 'age'])
for i in dic.keys(): #只取出键名
print(i)

在这里插入图片描述

2.3.3 values():返回字典里面包含的所有值

dic = {'name':'bingbing','age':18}
print(dic.values()) #dict_keys(['name', 'age'])
for i in dic.values(): #只取出值
    print(i)

[print(i) for i in dic.values()]

在这里插入图片描述

2.3.4 item():返回字典里面包含的所有键值对,键值对以元组形式

dic = {'name':'bingbing','age':18}
print(dic.items()) #dict_keys(['name', 'age'])
[print(i,type(i)) for i in dic.items()] #i是元组类型

在这里插入图片描述

2.4 字典的应用场景

使用键值对,存储描述一个物品的相关信息

03.集合及其常见操作

集合 set

3.1 集合格式: 集合名 = {元素1,元素2,元素3…}

集合格式:
s1 = {1,2,3}

s1 = {1,2,3}
print(s1,type(s1)) #{1, 2, 3} <class 'set'>
s2 = {} #定义空字典 #{} <class 'dict'>
print(s2,type(s2))
s3 = set() #定义空集合 #set() <class 'set'>
print(s3,type(s3))

注意:
1.集合是无序的,里面的元素是唯一的。
2.可以用于元组或者列表去重。

3.2 集合具有无序性

s1 = {'a','b','c','d','e','f'}
print(s1) #每次运行结果都不一样
s2 = {1,2,3} #数字运行结果一样
print(s2)

在这里插入图片描述

集合无序的实现方式涉及hash表(了解)

print(hash('a'))
print(hash('b'))
print(hash('c'))

在这里插入图片描述

每次运行结果都不同,hash值不同,那么在hash表中的位置也不同,这就实现了集合的无序性

print(hash(1))
print(hash(2))
print(hash(3))

在这里插入图片描述

python中int整型的hash值就是它本身,在hash表中的位置不会发送改变,所以顺序也不会改变

print(hash('1'))
print(hash('2'))
print(hash('3'))

在这里插入图片描述

用引号括起来,整型变成了字符串类型,所以hash值还是会发生改变

无序性:不能修改集合中的值

3.3 集合具有唯一性,可以自动去重

s1 = {1,2,3,4,5,6,4} #{1, 2, 3, 4, 5, 6}
print(s1)

3.4 集合常见操作

在这里插入图片描述

3.4.1 添加元素

(1)add 添加的是一个整体

s1 = {1,2,3,4,5,6,4} #{1, 2, 3, 4, 5, 6}
print("原集合:",s1) #原集合: {1, 2, 3, 4, 5, 6}
#集合的唯一性,决定了如果需要添加的元素在原集合中已经存在,就不进行任何操作
s1.add(9) #一次只能添加一个元素
print("现集合:",s1) #现集合: {1, 2, 3, 4, 5, 6, 9}
s1.add((7,10)) #一次只能添加一个元素
print("现集合:",s1) #现集合: {1, 2, 3, 4, 5, 6, 9}

在这里插入图片描述

(2)update 把传入的元素拆分,一个个放进集合中

s1 = {1,2,3,4,5,6,4} #{1, 2, 3, 4, 5, 6}
print("原集合:",s1) #
s1.update('789')
print("添加后:",s1)

在这里插入图片描述

s1 = {1,2,3,4,5,6,4} #{1, 2, 3, 4, 5, 6}
print("原集合:",s1) #
s1.update('789')
print("添加后:",s1)
s1.update([7,8,9])#添加列表
print("添加后:",s1)

在这里插入图片描述

s1 = {1,2,3,4,5,6,4} #{1, 2, 3, 4, 5, 6}
print("原集合:",s1) #
s1.update('789')
print("添加后:",s1)

在这里插入图片描述
元素必须是能够被我们for循环取值的可迭代对象

# s1.update([7,8,9]) #添加列表
# print("添加后:",s1)
s1.update((7,8,9)) #添加元组
print("添加后:",s1)

s1 = {1,2,3,4,5,6,4} #{1, 2, 3, 4, 5, 6}
print("原集合:",s1) #
s1.update('789')
print("添加后:",s1)
# s1.update([7,8,9]) #添加列表
# print("添加后:",s1)
# s1.update((7,8,9)) #添加元组  元素必须是能够被我们for循环取值的可迭代对象
# print("添加后:",s1)

s1.update({7,8,9}) #添加集合
print("添加后:",s1)

在这里插入图片描述

3.4.2 删除元素

(1)remove()
remove:选择删除的元素,如果集合中有就删除,没有就会报错

s1 = {1,2,3,4}
s1.remove(2)
print("删除后:",s1) #删除后: {1, 3, 4}
s1 = {1,2,3,4}
s1.remove(5) #报错,集合中没有5这个元素
print("删除后:",s1) #删除后: {1, 3, 4}

在这里插入图片描述

(2)pop()
pop对集合进行无序排列,然后将左边的第一个元素删除

s1 = {1,2,3,4}
s1.pop()
print("删除后:",s1) #删除后: {2, 3, 4}

在这里插入图片描述

s1 = {1,2,3,4}
s1.pop()
print("删除后:",s1) #删除后: {2, 3, 4}

s1 = {'a','b','c'}
s1.pop()  #默认删除根据hash表排序后的第一个元素
print("删除后:",s1) #删除后: {'b', 'c'}

在这里插入图片描述

(3)discard
discard:选择要删除的元素,有就会删除,没有则不会发生任何改变,即不会进行任何操作

s1 = {1,2,3,4}
s1.discard(3)
print("删除后:",s1) #删除后: {1, 2, 4}
s1.discard(8)
print("删除后:",s1) #删除后: {1, 2, 4}

s1 = {'a','b','c'}
s1.discard('a')
print("删除后:",s1) #删除后: {'b', 'c'}
s1.discard('e')
print("删除后:",s1) #删除后: {'b', 'c'}

在这里插入图片描述

04.交集、并集

4.1 交集 &

含义:共有的部分
在这里插入图片描述

a = {1,2,3,4}
b = {3,4,5,6}
c = {5,6,7,8}
print(a & b) #{3, 4}
print(a & c) #set() 没有共有的部分返回空集合set()
print(a | b) #{1, 2, 3, 4, 5, 6}

在这里插入图片描述

4.2 并集 |

含义:所有的都放一起,重复的不算(集合的唯一性)
在这里插入图片描述

学习地址:https://www.bilibili.com/video/BV1FS421K7Hs/?p=16&spm_id_from=pageDriver&vd_source=279585e3656eb1829d1f31997be26270

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值