容器详解
列表
- 列表是 有序、可变 的数据类型
- 列表中可以包含 不同类型 的对象
- 列表可以由 [] 创建
- 支持 下标 及 切片 操作
#demo01_list.py
alist = ['蔡徐坤']
#1.末尾添加
alist.append('卡丁车')
alist.append('朱星宇')
#2.添加到指定位置
print(alist)
alist.insert(1,'孙杰')
#3.扩展元素
alist.extend(['李蔓','崔佳'])
#alist.append(['李蔓','崔佳'])
#末尾删除一个
alist.pop()
#5.删除指定元素
alist.remove('卡丁车')
#6.按照索引删除
alist.pop(1)
#7.删除
del alist[0]
print (alist)
#8.清空
alist.clear()
#9.长度
print(len(alist))
print(alist)
#10.修改
alist[0] = '周杰伦'
print(alist)
#反转
li.reverse()
print(li)
#排序
score = [78,65,44,89]
score.sort() #默认从小到大
print(score)
#reverse是否倒序
score.sort(reverse=True)
print(score)
#list 转化为列表
num = list(range(1,10))
s = list('hello')
#反转字符串
s2 ='python'
print(s2[::-1])
slist = list(s2)
slist.reverse()
print(slist)
print(''.join(slist))
元组
元组的定义 tuple
- 通过
()
创建元组 - 元组是有序的、不可变类型
- 与列表类似,作用于列表的操作,绝大数也可以作用于元组
- 一般用于存储一些在程序中不应该被修改的一系列值
常见操作
由于元组不可变的特性,所有没有 增、删、改 操作
alist = [67,43,25,98,54,23]
#元组
atuple =(54,34,76,45,98,22)
print('列表:',alist)
print('元组:',atuple)
#通过索引获取元素
print(atuple[0])
print(atuple[-1])
print(atuple[0:3])
print(len(atuple),atuple.count(54))
#遍历元组
for item in atuple:
print(item)
#元组中的数据不能修改
#atuple[0] = 100 #报错
#atuple.append(200) #报错
print(atuple)
#注意元组中只有一个元素时,必须在其后面增加逗号
#元组
#注意元组中只有一个元素时,必须在其后面增加逗号
btuple = ()
print(btuple,type(btuple))
ctuple = (2,)
print(ctuple,type(ctuple))
dtuple = (2)
print(dtuple,type(dtuple))
字典
字典的定义 dict
-
dictionary
(字典) 是 除列表以外Python
之中 最灵活 的数据类型 -
字典同样可以用来 存储多个数据
- 通常用于存储 描述一个
物体
的相关信息
- 通常用于存储 描述一个
-
和列表的区别
- 列表 是 有序 的对象集合
- 字典 是 无序 的对象集合
-
字典用
{}
定义 -
字典使用 键值对 存储数据,键值对之间使用
,
分隔- 键
key
是索引 - 值
value
是数据 - 键 和 值 之间使用
:
分隔 - 键必须是唯一的
- 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
- 键
基本操作
创建字典
- 通过
{}
操作符创建字典
常见方法
访问字典:查询
字典是映射类型,意味着它没有下标,访问字典中的值需要使用相应的键
通过键 (key)
,访问字典
获取所有的键
通过 字典对象.keys()
获取
获取所有的值
通过 字典对象.values()
获取
获取所有键值对
通过 字典对象.items()
获取
#demo03_dict.py
#字典: 键值对
adict = {'语文':81,'数学':90}
print(adict)
#print(type(adict))
#获取所有的值
print(adict.values())
for v in adict.values():
print(v)
#获取所有的键
print(adict.keys())
#遍历
for item in adict.keys():
print('key:',item,'',adict[item])
print(adict['数学'])
#判断是否存在
print('英语' in adict)
#不存在返回None
print(adict.get('英语'))
#如果不存在值,会使用后边的默认值
print(adict.get('语文',0))
#统计数量
print(len(adict))
#清空数据
adict.clear()
print(adict)
#删除数据
adict.pop('语文')
del adict['数学']
print(adict)
#更新数据,键不存在,会作为添加
#第一种 单独修改
adict['语文'] = 100
adict['英语'] = 60
print(adict)
#第二种 整体修改
adict.update({'语文':81,'数学':90,'英语':55})
print(adict)
#同时获取键值对(元组)
print(adict.items())
for item in adict.items():
print('key:',item[0],'value:',item[1])
集合 set
- 集合与元组和列表相似都用于做容器,在内部可以放一些子元素
- 集合有三特殊特点:
子元素不重复
、子元素必须可哈希
、无序
。
提示:目前可哈希的数据类型 int/str/tuple
;不可哈希的类型 dict/list/set
。
集合类型操作符
- 集合支持用
in
和not in
操作符检查成员 - 能够通过
len()
检查集合大小 - 能够使用
for
迭代集合成员 - 不能取切片,没有键
#创建集合
aset = {24,32,'张三','里斯',True,(1,2)}
aset1 = {2,5,2,7,13,7,2}
#print(aset1)
#添加元素
aset1.add(10)
#删除元素
aset1.remove(13)
print(aset1)
#遍历
for num in aset1:
print(num)
print(len(aset1)) #获取长度
#是否存在
print(2 in aset1)
print(10 not in aset1)
交集、差集、并集
set01 = {3,5,7,9,14}
set02 = {1,2,5,7,20}
#差集
print(set01 - set02)
print(set01.difference(set02))
#交集
print(set01 & set02)
print(set01.intersection(set02))
#并集
print(set01 | set02)
print(set01.union(set02))
集合与列表之间的相互转化
alist = [3,5,7,3,5,7,18]
#列表转为集合,会自动去除列表中重复的元素
aset = set(alist)
print(aset)
#将集合转为列表
print(list(aset))
练习 :比较文件内容
with open('/opt/a.log',mode='r') as fo1:
set01 = set(fo1.readlines())
with open('/opt/b.log',mode='r') as fo2:
set02 = set(fo2.readlines())
print(set01)
print(set02)
print(set02-set01)