Python的数据容器(列表元组字典集合)增删改查等基本操作

@[TOC](Python的数据容器(列表元组字典集合)增删改查等基本操作

列表list

将一组元素放在一对方括号"[ ]"下,元素与元素之间用逗号隔开,元素可以为任何类型

list的特点:
1.有序(指添加的顺序有序)
2.可重复

list的创建

 #直接进行赋值
 list01=[1,2,3,4] 
 list02=["jim","tom",12,[1,2,3]]
 
 #使用list()函数    接受一个iterable对象
 list03=list()#创建空的列表
 list04=list(range(8))#产生[0,1,2,3,4,5,6,7,8]
 list05=list((1,2,3,4))#将元组转化为列表
 list06=list("I Love China")
 #输出结果为['I', ' ', 'L', 'o', 'v', 'e', ' ', 'C', 'h', 'i', 'n', 'a']
 #将字符串的每个字符作为一个列表元素
 
 #for循环和range()函数
  list07=[]
  for i in range(1,11)
  	list.append(i**2)
  	
 #列表生成式
 list08=[i**2  for i in range(1,11)]
 

list的增加

元素的增加

#使用append(新元素)方法
list01.append(5)#向列表尾部添加
#使用insert(索引,新元素)方法  在指定位置添加新元素
list01.insert(0,"num")#在第一个位置插入"num"

列表的增加

#用"+"号
list01+=list02#相当于list01=list01+list02
#用extend(要被添加的列表)
list01.extend(list02)#list02被添加到list01的后面

list的删除

#使用del命令 
del list01[1]#删除特定元素
del list01   #删除整个列表
#使用pop(索引)方法
list01.pop()#索引缺省默认为删最后一个
list01.pop(1)#删除第二个
#使用remove(元素值)方法
list01.remove(2)#删掉其中是2的元素

pop()方法和remove()方法的特点
pop()删除后会返回被删除的元素
remove()删除的是列表中排前面的待删除元素(可能会有重复的)

list的修改

列表名[索引]=新值

list的查找

list的访问

索引从左到右是从0开始向右 从右到左是从-1开始向左`

查找

#使用index(要查找的元素)方法
list01.index(2)#返回该元素的索引  未找到则会报错
if(2 in list01):
	list01.index(2)#避免报错
#使用len()函数查找元素个数
print(len(list01))#返回元素个数
#使用count(元素)方法找特定元素的个数
print(list01.count(2))#若没有找到返回0

list的一些操作

循环遍历

for num in list01:
	print(num)   #遍历每一个元素
for i in  range(len(list01))print("第{}个元素是是{}".format(i,list01[i])) #使用range函数
for index,n  in enumerate(list1)print(f'第{index}个是{n}')

排序

sort()方法和sorted()函数

#sort()对原来的列表进行操作
print(list.sort())# 结果为None  sort()原地操作改变原函数 也不返回 需要单独使用
list01.sort()  #默认从小到大
list01.sort(reverse=True)  #从小到大排序
print(list01)
#sorted()函数生成排序后的副本列表  返回副本列表
list01Copy=sorted(test,reverse=True)
print(list01Copy)

reverse()方法和reversed()函数
反转序列 差异和上面一样
reserve()对原来的列表进行操作 reserved()函数生成反转后的副本列表 返回副本列表

list的切片

列表名[起始索引:中止索引:n] (n表示每n个提取一个)

n缺省默认为1,即不间隔
提取从”起始索引“对应的元素到”中止索引“前的那个元素`
n为负数 从右往左取
起始索引缺省 默认从0开始
终止索引缺省 默认到最后一个
同时缺省 为全部

list的复制

直接赋值 listCopy=list01
”新“列表名和原列表名共享同一个列表又叫浅拷贝

#copy() 方法生成列表备份并赋给新的列表  叫"深拷贝"
listCopy01=list01.copy()
#用切片
listCopy03=list01[:]

还有” * “运算符
将列表中的元素重复多遍

元组tuple

多个元素用逗号隔开放在一对( )里
tuple的特点
1.元素是不变的不能被修改
2.有序
与list相比的优点
1.创建更快
2.更安全

元组的创建

tuple01=(1,2,3,4)
tuple02=1,2,3,4#也可不用括号
tuple03=(1,)#只有一个元素时要用逗号
#tuple()函数  和list()一样接受一个iterable对象
tuple04=tuple([1,2,3,4])

元组的增加删除修改

通通不能
这里的修改指不能对确定的元组修改里面的元素
但可以有多个元组变量指向同一个元组

元组的查找

和list一样用索引
index() 方法count()方法

元组的操作

不能用sort(),reverse()方法,因为这些都是在原来的元组上操作
函数sorted(),reversed()可以
” + “和” * “都可以

元组的切片

和list类似

元组的复制

切片和直接赋值

字典dictionary

若干组”键值对“放在大括号”{ }“里

{键1:值1,键2:值2,……}

dict的特点:
1.key具有唯一性,且必须是不可变类型,值可以相同且可以为任何类型
inmutable Number str tuple
2.无序(没有索引的概念)

dict的创建

dict01={"lili":98,"huahua":89,"lisa":92}
#使用dict()函数
dict02={}#创建空字典
dict03=dict()#空字典
#将一组双元素序列转化成字典
dict04=dict([(1,22),(2,33),(3,44)])

name=["lili","huahua","lisa"]
scores=[98,89,92]
dict05=dict(zip(name,scores))#使用zip()函数

dict的增加

字典名[要添加的键]=要添加的值

dict的删除

都是通过来删除

del 字典名[键]

字典名.pop(键,默认值)
默认值是该字典中不存在的键所对应的值 可以省略
键存在返回对应的值否则返回默认值

字典名.popitem() 随机删除条目并返回该条目 以元组的形式
默认是最后一个

字典名.clear()清空

del 字典名 删整个字典

dict的修改

字典名[键]=要改的值

dict的查找

# 键 in  字典
#字典名.get(键,默认值)
list01.get("lili") #返回对应的值  
#也可以设置默认值
list01.setdefault(要设置的值)

dict的操作

dict的遍历

#遍历所有的键  keys()方法获得所有的键  遍历所有的值values()方法  遍历所有的条目 items()方法  得到元组
for key in dic01.keys():
    print(key)
for value in dic01.values():
    print(value)
for k,v in dic01.items():
    print("{}是{}".format(k,v)) 

dict的排序

字典不支持对条目排序 sort()方法使用不了
使用sorted()函数 按键排返回键的列表

#按国家名升序输出三个国家和对应的国土面积
dicAreas={'Russia':1707.5,'Canada':997.1,'China':960.1}
ls=sorted(disAreas)
for country in ls:
	print(country,dicAreas[country])
#按国土面积排
lsVK=[(v,k) for k,v in dicAreas.items()]
lsVK.sort()
lsVK=[(v,k) for k,v in lsVK]
print(LsVK)

dict的类似切片

nums=[1,2,3,4]
dict06=dict.fmkeys(nums)  #{1: None, 2: None, 3: None, 4: None}
dict06=dict.fmkeys(nums,99) #{1: 99, 2: 99, 3: 99, 4: 99}

dict的复制

copy()函数

dict的合并

#for循环
for k,v in dic01.items():
	dict02[k]=v
#update()方法  字典名.update(要添加的字典名)
	dict02.update(dict01)

集合 set

将元素用" , “隔开放在” { } "里
set的特点
1.元素不可变,且互不相同
2.无序

set的创建

set01={1,2,3,4}
#用set()将序列创建为集合,重复的元素只保留一个
set02=set([1,2,3,4,3])#{1,2,3,4}
#创建空集合
set03=set() #不能是set03={}  这是字典

set的增加

集合名.add( item) 若加入的item是序列整体是元素
item 只能是不可变

集合名.update(item) 将item去重后加入
item可以是可变的

set的修改

没有顺序不能修改但可以先删除后添加

set的删除

删除指定元素

集合名.remove(item) item不存在会报错
集合名.discard(item) item不存在正常运行

集合名.pop() 随机删除 返回元素

集合名.clear() 清空

set的查找

in not in 运算符

for i in score:
	print(i)

set的操作

并集

s1={1,2,3,4,5}
s2={4,5,6,7,8}
s3=s1|s2
s3=s1.union(s2)

交集

s3=s1&s2
s3=s1.intersection(s2)

差集

s3=s1-s2   #{1,2,3}
s3=s1.difference(s2)

对称差集(不重复的并集)

s3=s1^s2  #{1,2,3,6,7,8}
s3=s1.symmetric_difference(s2)

包含

s1.issuperset(s2)  #是否包含s2

set的复制

copy() 浅拷贝
frozeset()函数

s3=frozeset(s1)  s3就固定了不能增删
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值