1.元组
基本介绍
- 元组的基本形式tuple
- 元组是一个不可变序列(一般我们希望数据不改变时,我们使用元组,其他情况下基本使用列表)
- 使用()创建元组
- 元组不是空元组,至少要有一个逗号(,)当元组不是空元组时括号可以省略
- 元组解包指将元组当中每一个元素都赋值给一个变量
a = tuple()
print(type(a))
输出结果:
<class 'tuple'>
******************************
tuple_m = (1,2,3,4,5)
tuple_m[3]=10
报错:(不可变)
TypeError: 'tuple' object does not support item assignment
******************************
a = 10
b = 10,
print(type(a),type(b))
输出结果:
<class 'int'> <class 'tuple'>
******************************
A = (10,20,30,40)
a,b,c,d = A
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
输出结果:
a= 10
b= 20
c= 30
d= 40
******************************
A = (10,20,30,40)
a,b = A
print('a=',a)
print('b=',b)
输出结果:
报错:too many values to unpack (expected 2)
注意:如果变量的数量要和元组中的元素一一对应,如果不对应,可以加个 * ,变量将会获取元素当中剩余的元素
A = (10,20,30,40)
a,b,*c = A
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 str bool tuple…)
- 字典的建是不能重复的,如果出现重复后面的会替换前面的
d = {'name':'葫芦娃','age':'7','sex':'男','name':'金刚葫芦娃'}print(d['name'],d['age'],d['sex'])
print(d)
输出结果:
金刚葫芦娃 7 男
{'name': '金刚葫芦娃', 'age': '7', 'sex': '男'}
*****************************
a = dict([('name','葫芦娃'),('age',7)])
print(a,type(a))
输出结果:
{'name': '葫芦娃', 'age': 7} <class 'dict'>
2.2字典的使用
- dict()函数来创建字典
注意:也可以将一个包含有双值子序列的序列转化为字典.
双值序列:序列当中有2个值,例如:[4,5]
子序列:如果序列当中的元素也是序列,我们就称这个元素为子序列.例如:[(1,2,3),(4,5)]
a = dict(name='葫芦娃',age=7,sex='男')
b = dict([('name','葫芦娃'),('age',7)])
print(a,type(a))
print(b,type(b))
输出结果:
{'name': '葫芦娃', 'age': 7, 'sex': '男'} <class 'dict'>
{'name': '葫芦娃', 'age': 7} <class 'dict'>
d = {'name':'葫芦娃','age':'7','sex':'男'}
len() 字典中键值对的个数
print(len(d))
in 检查字典中是否包含有指定的键
not in 检查字典中是否不包含有指定的键
print('葫芦娃' in d)
print('葫芦娃' not in d)
- get(key[,default])根据键来获取字典的值。第二个参数可以制定一个默认值,当获取不到的时候会返回默认值
d = {'name':'葫芦娃','age':'7','sex':'男'}
print(d.get('name'))
print(d.get('name','啥也不是'))
print(d.get('nameA','啥也不是'))
print(d.get('nameA'))
输出结果:
葫芦娃
葫芦娃
啥也不是
None
- 字典的修改和添加
d = {'name':'葫芦娃','age':'7','sex':'男'}
d['name']= '猪猪侠' #修改字典中的value
print(d)
d['phont']= 110 #如果字典中没有key,我们向字典中添加key-value
print(d)
#setdefault(key,default) 可以向字典中添加key-value
#如果字典中的key值已经存在,不会对字典有任何操作
#如果字典中的key值不存在,则向这个字典中添加这个key并设置value
d.setdefault('name','喜洋洋')
print(d)
d.setdefault('nameA','喜洋洋')
print(d)
输出结果:
{'name': '猪猪侠', 'age': '7', 'sex': '男'}
{'name': '猪猪侠', 'age': '7', 'sex': '男', 'phont': 110}
{'name': '猪猪侠', 'age': '7', 'sex': '男', 'phont': 110}
{'name': '猪猪侠', 'age': '7', 'sex': '男', 'phont': 110, 'nameA': '喜洋洋'}
- update()将其他字典的key-value添加到当前字典当中,如果有重复的key,后边的会覆盖前边的
a = {'a':1,'b':2,'c':3}
a1 = {'d':4,'e':5,'f':6,'a':7}
a.update(a1)
print(a)
输出结果:
{'a': 7, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
- del删除字典中的key-value
a = {'a':1,'b':2,'c':3}
del a['a']
print(a)
输出结果:
{'b': 2, 'c': 3}
- popitem()删除字典最后的一个key-value 一般都会删除最后一个,这个方法是有返回值的。删除之后它会将删除的key-value作为返回值返回,返回的是一个元组,元组中有2个元素,第一个元素是删掉的可key,第二个元素是删掉的value
a = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
r= a.popitem()
print(a)
print(r)
输出结果:
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
('f', 6)
- pop(key[,default])根据key删除字典中的value。第二个参数可以制定一个默认值,当获取不到值的滞后就会返回默认值,
a = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
r = a.pop('b')
print(a)
print(r)
w= a.pop('w','这个没有')
print(w)
n= a.pop('w') #报错KeyError: 'w'
print(n)
输出结果:
{'a': 1, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
2
这个没有
- clean()
a = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
a.clean()
print(a)
输出结果:
{}
2.3copy() (浅复制)
- copy()方法对字典进行潜复制
注意:潜复制只会复制字典本身,如果字典中还有个字典是不会进行复制的
a1 = {'d':{'name':'黑猫警长'},'e':5,'f':6,'a':7}
a = a1.copy()
a['d']['name'] = '喜洋洋'
print('a1=',a1,id(a1))
print('a=',a,id(a))
输出结果:
a1= {'d': {'name': '喜洋洋'}, 'e': 5, 'f': 6, 'a': 7} 140327461091200
a= {'d': {'name': '喜洋洋'}, 'e': 5, 'f': 6, 'a': 7} 140327461091456
***********************************************
a1 = {'d':'ad','e':5,'f':6,'a':7}
a= a1.copy()
a['d']= 'we'
print('a1=',a1,id(a1))
print('a=',a,id(a))
输出结果:
a1= {'d': 'ad', 'e': 5, 'f': 6, 'a': 7} 140403938948928
a= {'d': 'we', 'e': 5, 'f': 6, 'a': 7} 140403938948992
3字典的遍历
我们主要通过3种方式对字典进行遍历
- key() 该方法返回字典所有的key
- values() 该方法返回一个序列 序列中保存有字典的值
- items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含双值子序列 双值分别是 字典中的key和value
d = {'name':'葫芦娃','age':'7','sex':'男'}
for k in d.keys():
print(k)
输出结果:
name
age
gender
*****************************************
for v in d.values():
print(v)
输出结果:
葫芦娃
7
男
*****************************************
for k,v in d.items():
print(k)
print(v)
输出结果:
name
葫芦娃
age
7
gender
男
4.集合
4.1集合简介
- 集合表现形式 set , 集合和列表非常相似
- 不同点 (集合和列表)
1.集合只能存储不可变对象
2. 集合中存储的对象是无序的(不是按元素插入顺序保存的)
3.集合不能出现重复元素
b = {[1,2,3],[4,5,6]}
print(b)
输出结果: #集合只能存储不可变对象
报错:
TypeError: unhashable type: 'list'
********************************************
s = {1,2,10,3,4}
print(a ,type(a))
输出结果:#集合中存储的对象是无序的
{1, 2, 3, 4, 10} <class 'set'>
********************************************
a = {1,2,10,3,4,1}
print(a ,type(a))
输出结果:#集合不能出现重复元素
{1, 2, 3, 4, 10} <class 'set'>
- 使用 {} 来创建
a = {1,2,3}
print(type(a))
输出结果:
<class 'set'>
- 可以通过set() 来将序列和字典转换成集合
s =set ([1,2,3,4])
print(s,type(s))
输出结果:
{1, 2, 3, 4} <class 'set'>
- len()使用len()来获取集合中元素的数量
s = {1,2,3,5,4}
print(len(s))
输出结果:
5
- add()向集合中添加元素
s = {1,2,3,5,4}
s.add(6)
print(s)
输出结果:
{1, 2, 3, 4, 5, 6}
- update() 将一个集合中的元素添加到另外一个集合当中
s = {1,2,3,5,4}
s1 = {8,9,7}
s.update(s1)
print(s)
输出结果:
{1, 2, 3, 4, 5, 7, 8, 9}
- pop() 随机删除集合中的一个元素(一般是删除最后一个元素)
s = {1,2,3,5,4}
s.pop()
print(s)
输出结果:
{2, 3, 4, 5}
- remove() 删除集合中指定的元素
s = {1,2,3,5,4}
s.remove(2)
print(s)
输出结果:
{1, 3, 4, 5}
- clear() 清空集合
s = {1,2,3,5,4}
s.clear()
print(s)
输出结果:
set()
4.2集合的运算
- & 交集运算
- | 并集运算
- - 差集运算
- ^亦或集
- <= 检查一个集合是否是另外一个集合的子集
- < 检查一个集合是否是另外一个集合的真子集
- >= 检查一个集合是否是另外一个集合的超集
- > 检查一个集合是否是另外一个集合的真超集
s = {1,2,3,4,5}
s2 = {3,4,5,6,7}
& 交集运算
r = s & s2
| 并集运算
r = s | s2
- 差集运算
r = s - s2
r = s2 - s
^ 亦或集
r = s2 ^ s
print('s='s,'s2='s2,'r='r)
输出结果:
s={1, 2, 3, 4, 5}
s2={3, 4, 5, 6, 7}
r={3, 4, 5} #交集运算
r={1, 2, 3, 4, 5, 6, 7}#并集运算
r={1, 2} r={6, 7} #差集运算
r={1, 2, 6, 7} #亦或集
****************************************
a = {1,2,3,}
b = {1,2,3,4,5}
r = a <= b
r1 = a < b
print(r,r1)
输出结果:
True #检查集合a是否是集合b的子集
True #检查集合a是否是另外集合b的真子集
网友评论