python-day05 列表与元组、字典、集合

容器详解

列表

  • 列表是 有序、可变 的数据类型
  • 列表中可以包含 不同类型 的对象
  • 列表可以由 [] 创建
  • 支持 下标切片 操作

#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

集合类型操作符
  • 集合支持用 innot 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值