5 组合数据类型的基本概念
5.1 集合类型
5.1.1 集合类型概述
Python语言中的集合类型与数学中集合概念一致,即包含0个或多个数据项的无序组合。用大括号{}表示,它没有索引和位置的概念,集合中的元素可以动态增加或删除。
由于集合元素独一无二,使集合类型可以过滤掉重复元素
s={90,1010,'def','76.8',90}
print(type(s))
print(s)
输出无序,并且可以自动过滤掉重复元素。
5.1.1 集合类型的操作符
s={1010,'def','76.8',90}
t={1010,'python',12.3,1010}
print(s)
print(t)
print(s-t) #s和t的差集
print(s&t) #s和t的交集
print(s^t) #s和t的补集
print(s|t) #s和t的并集
5.1.2 集合类型的操作函数和方法
s={1010,"python",78.9}
s.add('人工智能') #如果add()函数中的参数在集合中未出现,则把add()中的参数加入到集合s中
print(s)
s.remove('人工智能') #把remove()函数中的参数,在集合s中删除
print(s)
s.clear() #将集合中所有元素清空 输出set()
print(s)
print(len(s)) #统计集合中的元素个数
print(1010 in s) #检测1010是否在集合s中,在返回True,不在的话返回False
print(1010 not in s) #检测1010是否不在集合s中,不在返回True,在的话返回False
运行结果如下
set( )函数可以将其他的组合数据类型变成集合类型,返回结果是一个无重复且排序任意的集合。set()函数也可以生成空集合变量
a=set()
print(a) #输出set()表示空集合
s=set("知之为之不知为不知")
print(s)
5.2 列表类型
5.2.1 列表类型概述
ls=['甜甜圈','珍珠奶茶','方便面','卡路里',101] #列表不会改变字符串的顺序,也不会删除重复数据
print(ls,type(ls))
print(list('列表可以由字符串生成'))
5.2.2 列表的索引
索引是列表的基本操作,用于获得列表的一个元素。使用中括号作为索引操作符。
ls=[1101,'1102',[1103,'1104'],1115] #对应元素位置是 0 1 2 3 或者 -3 -2 -1 0
print(ls[-2])
print(ls[3])
可以使用遍历循环对列表元素进行遍历操作。
运行结果如下:
5.2.3 列表的切片
切片是列表的基本操作,用于获得列表的一个判断,即获得一个或多个元素。切片后的结果也是列表的类型。
切片的使用方法:
切片获取列表类型从N到M(不包括M)的元素组成新的列表。当k存在时,切片获取列表类型从N到M(不包括M)以K为步长所对应元素组成的列表。
ls=[1101,'1102',[1103,'1104'],1115] #对应元素位置是 0 1 2 3 或者 0 -1 -2 -3
print(ls[1:4])
print(ls[-3:-1])
print(ls[0:4:2])
运行结果如下:
5.2.4列表的操作方法
ls=['风清扬','令狐冲','东方不败','杨过','东方不败']
ls.append('欧阳锋') #在列表最后添加元素'欧阳锋'
print(ls)
lt=['萧峰','独孤求败'] #对列表进行拼接
ls +=lt
print(ls)
ls.insert(1,'郭靖')
print(ls)
print(ls.pop(1)) #删除列表中1号元素
print(ls)
ls.remove('东方不败') #只删除第一个东方不败
print(ls)
del ls[1:3] #删除1号元素到2号元素 del[1:]删除1号元素之后的所有元素
print(ls)
print(ls.reverse) #列表反转
lt=ls.copy()
print(ls)
print(lt)
ls[1]='修改' #使用索引配合等号(=)可以对列表元素进行修改
print(ls)
ls.clear() #清空列表
print(ls)
5.3元祖
Python的元祖与列表类似,不同之处在于元祖的元素不能修改。
元祖使用小括号{},列表使用方括号。
元祖创建简单,只需要在括号中添加元素,并使用逗号隔开即可。
元祖的函数 count与index
元祖只涉及两个函数,count用来统计元祖中元素个数。index用来对元祖进行索引
ls=('风清扬', '令狐冲', '东方不败', '杨过', '东方不败', '欧阳锋')
print(ls,type(ls)) #对应类型为元祖
num=ls.count('东方不败')
print(num)
id=ls.index('东方不败') #返回对应的第一个元素位置
print(id)
print(ls[1]) #索引的时候都用中括号[]
lt=['苹果','橘子','梨']
print(tuple(lt)) #tuple可以将列表转化为元祖
lp='十大武林高手'
print(tuple(lp)) #tuple可以将字符串转化为元祖
tuple可以将字符串和列表转化成元祖
5.4字典操作
5.4.1 字典的索引&修改&建立
Python语言中的字典使用大括号{}建立,每个元素是一个键值对。
使用方式:
键和值通过冒号连接,不同建制对通过逗号隔开。大括号可以表示集合,字典类型也具有集合类似的性质,即键值对之间没有顺序且不能重复。
d={'两弹元勋':'邓稼贤','青蒿素':'屠呦呦','水稻之父':'袁隆平'}
print(d,type(d))
字典的索引&修改
print(d['两弹元勋']) #对字典进行索引
d['两弹元勋']="邓稼先"
print(d)
运行结果:
字典的创建
#定义字典
t={ } #定义集合必须使用set()
t[201804]="小新"
t[201805]="小强"
print(t)
5.4.2 字典的操作函数
字典类型具有一些典型的操作函数:
创建一个空字典:
a=dict() #创建一个空字典
print(a)
运行结果如下:
字典的长度,最大键值和最小键值:
d={"201804":"张三","201805":"李四","201806":"王五"}
a=len(d)
print(a)
a=max(d)
print(a)
a=min(d)
print(a)
运行结果如下:
d.keys()
获取字典中键的信息
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
a=d.keys() #获取字典中键的信息
print(a)
b=list(d.keys()) #把字典中的关键字转化成列表
print(b)
d.values()
获取字典中值的信息
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
a=d.values()
print(a)
b=list(d.values()) #把字典的值转换成列表
print(b)
运行结果如下:
d.items()
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
a=d.items()
print(a)
b=list(d.items()) #把字典的键值对儿转换成元组
print(b)
运行结果如下:
d.get(key,defalut)
如果字典中存在key关键字,返回关键字的值,否则返回defalut(用户可自定义具体值)
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
a=d.get('201804',"没有该元素")
print(a)
a=d.get('201802',"没有该元素")
print(a)
运行结果如下:
字典的删除
d.pop(key,defalut)
查找key关键字,如果存在返回对应值,并在字典中删除。若字典中不存在key关键字,返回defalut
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
a=d.pop('201804',"没有该元素")
print(a)
print(d)
运行结果如下:
d.popitem()
随机删除字典中键值对儿
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
a=d.popitem()
print(a)
print(d)
del d[key]
删除字典中对应key的键值
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
del d['201803'] #删除某一键值对
print(d)
运行结果如下:
d.clear()
清空字典
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
d.clear()
print(d)
运行结果如下:
检查某一键值是否存在于字典中:
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
print("201804" in d) #只可以用来检查键是否存在
运行结果如下:
字典的循环遍历:
d={"201803":"刘七","201804":"张三","201805":"李四","201806":"王五"}
for k in d:
print("字典的键和值分别是:{}和{}".format(k,d.get(k)))#get用于获得k对应的值。