Python学习之七 Python的元组&字典&集合

1. 元组简介

  • 元组基本介绍
  • 元组表现形式:tuple
  • 元组是⼀个不可变序列(⼀般当我们希望数据不改变时,我们使⽤元组,其他情况下基本都⽤列表)
  • 在元组中,使⽤()创建元素
tup =(1,2,3,4,5)
print(tup,type(tup)) 
# 运行结果为:(1, 2, 3, 4, 5) <class 'tuple'>
  • 元组不是空元组⾄少有⼀个 逗号(,) 当元组不是空元组时括号可以省略
tup = ()
print(tup,type(tup)) 
# 运行结果为: () <class 'tuple'>
  • 元组解包指将元组当中的每⼀个元素都赋值给⼀个变量
tup = 10,20,30,40
a,b,c,d = tup
print('a =',a)
print('b =',b)
print('c =',c)
print('d =',d)
执行结果为:
a = 10
b = 20
c = 30
d = 40
  • 还可以用 *a的形式,把指定位置以外的元素以列表的形式解包,如:
tup = 10,20,30,40
a,b,*c = tup
print('a =',a)
print('b =',b)
print('c =',c)
执行结果为:
a = 10
b = 20
c = [30, 40]

2. 字典简介

  • 2.1 字典的基本介绍
  • 字典属于⼀种新的数据结构称为映射(mapping) 。字典的作⽤和列表类似,都是⽤来存储对象的容器
  • 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
  • 在字典中每⼀个元素都有唯⼀的名字,通过这个唯⼀的名字可以找到指定的元素。这个唯⼀的名字我们称之为key 通过key可以快速查询value 也可以称之为值。字典我们也称之为键值对(key-value)结构。每个字典中都可以有多个键值对,⽽每⼀个键值对我们称其为⼀项(item) 创建⼀个有数据的字典 语法 {key:value}字典的值可以是任意对象 字典的键可以是任意的不可变对象(int 、st、r bool、 tuple…… )字典的键是不能重复的,如果出现重复的后⾯的会替换前⾯的
示例:
d = {'name':'葫芦娃','age':20,'sex':'男'}
print(d,type(d))
执行结果:
{'name': '葫芦娃', 'age': 20, 'sex': '男'} <class 'dict'>
  • 2.2 字典的使⽤
  • dict( ):函数来创建字典
示例:
d = dict(name='葫芦娃',age=18,sex='男') # 向函数当中传递了3个参数
print(d,type(d))
执行结果:
{'name': '葫芦娃', 'age': 18, 'sex': '男'} <class 'dict'>
  • get(key[,default]) :根据键来获取字典的值。第⼆个参数可以指定⼀个默认值,当获取不到值的时候会返回默认值
示例:
d = dict([('name','葫芦娃'),('age',18)])
print(d.get('name'))
执行结果为:
葫芦娃

d = dict([('name','葫芦娃'),('age',18)])
print(d.get('sex','key值不在!'))
执行结果为:
key值不在!
  • update() :将其他字典的key-value添加到当前的字典当中
示例:
d1 = {'a':1,'b':2,'c':3}
d2 = {'d':4,'e':5,'f':6,'a':8}
d1.update(d2)
print(d1)
执行结果为:
{'a': 8, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
注意:将其他字典的k-v添加到当前的字典中,如果有重复的key 后面的key会替换前面的key。
  • del: 用del来删除字典中的key-value
d1 = {'a':1,'b':2,'c':3}
d2 = {'d':4,'e':5,'f':6}
print('删除前:','d1=',d1,'d2=',d2)
del d1['a']
del d2['f']
print('删除后:','d1=',d1,'d2=',d2)
  • popitem() :删除字典最后的⼀个key-value 这个⽅法是有返回值的。删除之后它会将删除的key-value作为返回值返回
示例:
d = {'a':1,'b':2,'c':3,'d':4}
r = d.popitem()
print('删除的内容为:',r)
print('修改后的新字典为:',d)
执行结果为:
删除的内容为: ('d', 4)
修改后的新字典为: {'a': 1, 'b': 2, 'c': 3}
  • pop(key[,default]) 根据key删除字典中的value。第⼆个参数可以指定⼀个默认值,当获取不到值的时候会返回默认值
示例:
d = {'a':1,'b':2,'c':3,'d':4}
r = d.pop('w','这个key值不存在')
print('删除的内容为:',r)
print('修改后的新字典为:',d)
执行结果为:
删除的内容为: 这个key值不存在
修改后的新字典为: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
  • 2.3 浅复制copye()
  • copy() ⽅法⽤来对字典进⾏浅复制。注意:浅复制只会复制字典本身,如果字典中还有个字典是不会进⾏复制的
示例1:
d1 = {'a':1,'b':2,'c':3}
d2 = d1  # 通过赋值形式,两个变量同时指向字典,修改其中一个字典的数值,另一个变量指向的字典值也同步被修改
d1['b'] = 500
print('d1 =',d1,id(d1))
print('d2 =',d2,id(d2))
执行结果为:
d1 = {'a': 1, 'b': 500, 'c': 3} 1676659944472
d2 = {'a': 1, 'b': 500, 'c': 3} 1676659944472

示例2:
d1 = {'a':1,'b':2,'c':3}
d2 = d1.copy() #通过copye()形式实现浅复制,复制以后的对象,和原对象是独立的,修改其中一个不会影响另一个
d1['b'] = 500
print('d1 =',d1,id(d1))
print('d2 =',d2,id(d2))
执行结果为:
d1 = {'a': 1, 'b': 500, 'c': 3} 1819229514776
d2 = {'a': 1, 'b': 2, 'c': 3} 1819229514848

示例3:
d1 = {'a':{'name':'葫芦娃','age':20},'b':2,'c':3}
d2 = d1.copy()
d2['a']['name'] = '黑猫警长'
print('d1 =',d1,id(d1))
print('d2 =',d2,id(d2))
执行结果为:
d1 = {'a': {'name': '黑猫警长', 'age': 20}, 'b': 2, 'c': 3} 1887970815072
d2 = {'a': {'name': '黑猫警长', 'age': 20}, 'b': 2, 'c': 3} 1887970815432
浅复制只会复制字典本身,如果字典中还有个字典,是不会被复制。这个值也可以是一个可变对象,这个可变对象也不会被复制

3. 遍历字典

  • 我们主要可以通过3种⽅式对字典进⾏遍历
  • keys():该⽅法返回字典所有的key
# keys() 该方法会返回字典所有的key
d = {'name':'葫芦娃','age':20,'sex':'男'}
print(d.keys())
执行结果为:
dict_keys(['name', 'age', 'sex'])

# 用for循环实现key遍历
d = {'name':'葫芦娃','age':20,'sex':'男'}
for k in d.keys():
	print(d[k])
执行结果为:
葫芦娃
20
男
  • values() :该⽅法返回⼀个序列 序列中保存有字典的值
# values() 该方法会返回一个序列,序列中保存有字典的值
d = {'name':'葫芦娃','age':20,'sex':'男'}
print(d.values())
执行结果为:
dict_values(['葫芦娃', 20, '男'])

# 用for循环实现values遍历
d = {'name':'葫芦娃','age':20,'sex':'男'}
for v in d.values():
       print(v)
执行结果为:
葫芦娃
20
男
  • items() :该⽅法会返回字典中所有的项,它返回⼀个序列,序列中包含有双值⼦序列,双值分别是字典中的key和value
# items() 该方法会返回字典所有的项
d = {'name':'葫芦娃','age':20,'sex':'男'}
print(d.items())
执行结果为:
dict_items([('name', '葫芦娃'), ('age', 20), ('sex', '男')])

# 用for循环实现values遍历
d = {'name':'葫芦娃','age':20,'sex':'男'}
for k,v in d.items():
    print(k,'=',v)
执行结果为:
name = 葫芦娃
age = 20
sex = 男

4. 集合

  • 4.1 集合简介
  • 集合表现形式’set’,集合和列表⾮常相似,不同点为:
  • 集合只能存储不可变对象
  • 集合中存储的对象是⽆序的
  • 集合不能出现重复元素
  • 使⽤ {} 来创建集合
示例:
s = {1,2,3,4}
print(s,type(s)) 
执行结果为:
{1, 2, 3, 4} <class 'set'>
  • len( ):使⽤len()来获取集合中元素的数量
示例:
s = {'a','b',1,2,3}
print(len(s))
执行结果为:
5
  • add( ):向集合中添加元素
示例:
s = {'a','b',1,2,3}
s.add(50)
s.add(100)
print(s)
执行结果为:
{1, 2, 3, 100, 'b', 50, 'a'}
  • update():将⼀个集合中的元素添加到另⼀个集合当中
示例:
s = {'a','b',1,2,3}
s2 = set('python')
s.update(s2) 
print(s)
执行结果为:
{1, 2, 3, 'b', 't', 'a', 'h', 'o', 'n', 'p', 'y'}
  • pop( ):随机删除集合中的⼀个元素⼀般是删除最后⼀个元素
示例:
s = {1,2,3,4,5,6}
r = s.pop()
print('删除的元素为:',r)
print('修改后的集合为:',s)
执行结果为:
删除的元素为: 1
修改后的集合为: {2, 3, 4, 5, 6}
  • remove( ) :删除集合中指定的元素
示例:
s = {1,2,3,4,5,6}
print('原集合为:',s)
s.remove(4)
print('修改后的集合为:',s)
执行结果为:
原集合为: {1, 2, 3, 4, 5, 6}
修改后的集合为: {1, 2, 3, 5, 6}
  • clear( ):清空集合
  • 4.2 集合的运算
  • 交集运算 &
  • 并集运算 |
  • 差集运算 -
  • 亦或集 ^
  • 子集判断 <= 检查⼀个集合是否是另⼀个集合的⼦集
  • 真子集判断 < 检查⼀个集合是否是另⼀个集合的真⼦集
  • 超集判断 >= 检查⼀个集合是否是另⼀个集合的超集
  • 真超集判断 > 检查⼀个集合是否是另⼀个集合的真超集