python入门之容器类型数据的一系列操作之列表、字典、集合

列表的操作

1.列表的拼接 (同元组)
2.列表的重复 (同元组)
3.列表的切片 (同元组)
语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]
(1)[开始索引:] 从开始索引截取到列表的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
(5)[:]或[::] 截取所有列表
4.列表的获取 (同元组)
5.列表的修改 ( 可切片 )
6.列表的删除 ( 可切片 )

列表相关函数

增、删、改、查、计数、排序
append()、insert()、extend()、pop()、remove()、clear()、index()、count()、
sort()、reverse()

元组相关操作和方法

元组相关操作除了不能修改和删除其中的元素之外,剩下的操作都和列表相同。元组里面能用的方法只有index和count

字典的相关函数
函数名含义
fromkeys()使用一组键和默认值创建字典
pop()通过键去删除键值对 (若没有该键可设置默认值,预防报错)
popitem()删除最后一个键值对
clear()清空字典
update()批量更新(有该键就更新,没该键就添加)
get()通过键获取值(若没有该键可设置默认值,预防报错)
keys()将字典的键组成新的可迭代对象
values()将字典中的值组成新的可迭代对象
items()将字典的键值对凑成一个个元组,组成新的可迭代对象
集合的交差并补
函数名含义
intersection()交集
difference()差集
union()并集
symmetric_difference()对称差集 (补集情况涵盖在其中)
issubset()判断是否是子集
issuperset()判断是否是父集
isdisjoint()检测两集合是否不相交 不相交 True 相交False

集合相关的函数

函数名含义
add()向集合中添加数据
update()迭代着增加
clear()清空集合
pop()随机删除集合中的一个数据
remove()删除集合中指定的值(不存在则报错)
discard()删除集合中指定的值(不存在的不删除 推荐使用)

冰冻集合
#frozenset 可强转容器类型数据变为冰冻集合
冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作


1.列表的拼接 (同元组)

listvar = [1,2]
listvar2 = [4,5]
res = listvar + listvar2
print(res)
tup1 = (1,2)
tup2 = (44,11)
res = tup1 + tup2
print(res)

2.列表的重复 (同元组)

listvar = [1,2,3]
res = listvar * 3
print(res)

3.列表的切片 (同元组)

语法 => 列表[::]  完整格式:[开始索引:结束索引:间隔值]
	3.1[开始索引:]  从开始索引截取到列表的最后
	3.2[:结束索引]  从开头截取到结束索引之前(结束索引-1)
	3.3[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
	3.4[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
	3.5[:]或[::]  截取所有列表

3.1[开始索引:] 从开始索引截取到列表的最后

listvar = ["乔峰","段誉","虚竹","王语嫣","阿朱","阿紫","慕容复","游坦之",]
res = listvar[1:]
print(res)

3.2[:结束索引] 从开头截取到结束索引之前(结束索引-1)

res = listvar[:-1]
print(res)

3.3[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)

res = listvar[4:5]
print(res)

3.4[开始索引:结束索引:间隔值]

listvar = ["乔峰","段誉","虚竹","王语嫣","阿朱","阿紫","慕容复","游坦之",]
res = listvar[3::2] #王语嫣、阿紫
res = listvar[:5:2] 
res = listvar[-6:-9:-1] 
res = listvar[-6:-9:-100]  
print(res)
res = listvar[::3]
print(res)

3.5[:] [::] 获取到所有的列表

res  = listvar[:]
print(res)

5.列表的删除 ( 可切片 )

listvar = ["乔峰","段誉","虚竹","王语嫣","阿朱","阿紫","慕容复","游坦之",]
del listvar[-2]
print(listvar)
列表的相关函数 增删改查(数据结构中的双向链表)

一 增
append ():向列表的末尾添加新的元素

listvar = [1,2,3]
res = listvar.append(4)
print(listvar)

insert ():在指定索引之前插入元素
也就是说代替这个位置喽,即你跑步追上了第二名,你是第几名呢?

listvar = [1,2,3]
listvar.insert(1,"4")
print(listvar)

extend ():迭代追加所有元素

listvar = [11,22,33]
listvar.extend("abc")
print(listvar)
listvar.extend(["鲁智深","吴勇","花荣"])
print(listvar)

二 删除
pop():通过指定索引删除元素,若没有索引移除最后那个

listvar = ["贾宝玉", "薛宝钗","林黛玉","王熙凤"]
res = listvar.pop()
print(res)
print(listvar)
# 指定索引删除
res = listvar.pop(0)
print(res)
print(listvar)

remove 功能:通过给予的值来删除,如果多个相同元素,默认删除第一个

listvar = ["贾宝玉", "薛宝钗","林黛玉","王熙凤","刘姥姥"]
res = listvar.pop()
print(res)
print(listvar)

clear():清空列表

listvar = ["贾宝玉", "薛宝钗","林黛玉","王熙凤","刘姥姥"]
listvar.clear()
print(listvar)

index():获取某个值在列表中的索引

listvar = ["贾宝玉", "薛宝钗","林黛玉","王熙凤","刘姥姥"]
res = listvar.index("林黛玉")
res = listvar.index("林黛玉",2)
#res = lisevar.index("猪八戒",4,7)
print(res)
print(listvar)

count():计算某个元素出现的次数

listvar = ["路飞","坂田银时", "坂本辰马","萨达哈鲁","新八鸡","萨达哈鲁","娜美啧啧","雏田"]
res = listvar.count("萨达哈鲁")
print(res)

sort() :列表排序(默认小到大排序)

listvar = [1,99,-9,23,199]
listvar.sort()
print(listvar)
#reverse=True 选择倒叙 True (从大到小)
listvar.sort(reverse=True)
print(listvar)

reverse ():列表反转操作

listvar = [91 , -88 ,123 ,66]
listvar.reverse()
print(listvar)

listvar = ["oneal","kobi","james","andoni","kuli"]
listvar.sort()
# 如果是字母 按照ascii吗进行排序 一位一位的比较
# ['andoni', 'james', 'kobi', 'kohi', 'oneal']
字典的相关函数

一、增

dictvar = {}
dictvar["a"] = 1
dictvar["b"] = 2
print(dictvar)

fromkeys() 使用一组键和默认值创建字典 ( 不常用 了解)

listvar = ["a","b"]
dictvar = {}
dictvar2 = dictvar.fromkeys(listvar,None)
print(dictvar2)

pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)

dictvar = {"top":"鲁班七号","middle":"甄姬","bottom":"盘古"}
res = dictvar.pop("top")
print(dictvar)
print(res)
res = dictvar.pop("top1","该top1键不存在")
print(res)

popitem() 删除最后一个键值对

dictvar = {"top":"鲁班七号","middle":"甄姬","bottom":"盘古"}
res = dictvar.popitem()
print(res)
print(dictvar)

clear() 清空字典

dictvar = {"top":"鲁班七号","middle":"甄姬","bottom":"盘古"}
dictvar.clear()
print(dictvar)

三、改
update() 批量更新(有该键就更新,没该键就添加)
update 如果存在此键,则更改该值,如果不存在此键,则添加该键值对

dictvar = {"top":"鲁班七号","middle":"甄姬","bottom":"盘古"}
dictvar2 = {"jungle":"韩信","support":"蔡文姬"}
dictvar2 = {"jungle":"韩信","support":"蔡文姬","bottom":"孙策"}
dictvar.update(dictvar2)
print(dictvar)

四 、查
get()通过键获取值(若没有该键可设置默认值,预防报错)
存在这个键则拿取这个值,如果不存在这个键,
则使用默认值,如果不设置默认值,默认返回None

dictvar = {"top":"鲁班七号","middle":"甄姬","bottom":"盘古"}
res = dictvar.get("middle123")
res = dictvar.get("middle","不存在该键")
print(res)

其他操作
keys() 将字典的键组成新的可迭代对象

dictvar = {"top":"鲁班七号","middle":"甄姬","bottom":"盘古"}
print(dictvar.keys())
print("<==>")
for i in dictvar:
	print(i)
for i in dictvar.keys():
	print(i)

values() 将字典中的值组成新的可迭代对象

print(dictvar.values())
for i in dictvar.values():
	print(i)

items() 将字典的键值对凑成一个个元组,组成新的可迭代对象

print(dictvar.items())

for k,v in dictvar.items():
	print(k,"=>",v)
集合的交叉并补
set1 = {"周杰伦","李宇春","王宝强","斯嘉丽"}
set2 = {"周润发","刘德华","乌蝇哥","斯嘉丽","李宇春"}
# ### 集合的交叉并补

set1 = {"周杰伦","李宇春","王宝强","斯嘉丽"}
set2 = {"周润发","刘德华","王文","斯嘉丽","李宇春"}
#intersection() 交集 
# print(set1 & set2)
# print(set1.intersection(set2))

#difference()   差集 
# print(set1 - set2)
# print(set1.difference(set2))
  
#union()  并集 
# print(set1 | set2)
# print(set1.union(set2))

#symmetric_difference() 对称差集 (补集情况涵盖在其中) 
# print(set1 ^ set2)
# print(set1.symmetric_difference(set2))

#issubset()   判断是否是子集
set1 = {"李逵","张飞","关羽","贾宝玉"}
set2 = {"张飞","关羽"}
# print(set2 < set1 )
# print(set2.issubset(set1))

#issuperset()  判断是否是父集
# print(set1 > set2)
# print(set1.issuperset(set2))
#isdisjoint() 检测两集合是否不相交  不相交 True  相交False
print(set1.isdisjoint(set2))

# ### 集合的相关函数
setvar = {"李逵","张飞","关羽","贾宝玉"}
# 一 增
#add()    向集合中添加数据
setvar.add("李四")
print(setvar)
#update() 迭代着增加
setvar = {"李逵","张飞","关羽","贾宝玉"}
setvar.update("abc")
print(setvar)
# 二 删
#clear()  清空集合
setvar.clear()
print(setvar)
#pop()     随机删除集合中的一个数据
setvar = {"李逵","张飞","关羽","贾宝玉"}
res = setvar.pop()
print(res)
print(setvar)

#remove()  删除集合中指定的值(不存在则报错)
setvar = {"李逵","张飞","关羽","贾宝玉"}
# setvar.remove("关羽")
# setvar.remove("关羽123")  # 不存在的error情况
print(setvar)

#discard() 删除集合中指定的值(不存在的不删除 推荐使用)
setvar.discard("关羽")
setvar.discard("关羽456")
print(setvar)
# 集合不能够修改和查询
# 冰冻集合:
"""
#frozenset 可强转容器类型数据变为冰冻集合
冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作
"""
# 定义一个空的冰冻集合
fz = frozenset()
print(fz,type(fz))
fz1 = frozenset(["你好","世界","地球"])
fz2 = frozenset({"世界","球"})
print(fz1,type(fz1))
print(fz2,type(fz2))
# 冰冻集合仅仅只能做交叉并补,不能做添加或删除的相关操作
print(fz1 & fz2)
# fz1.add("足球") error

深浅拷贝
### 深拷贝 与 浅拷贝 
"""
a  = 10
b = a
a = 7
print(b)

# 不同的两个变量指向了同一个列表
listvar = [1 , 2 ,3 , 4 ]
listvar2 = listvar
listvar.append(5)
print(listvar2)

"""


# 浅拷贝
# 方法一
listvar = [1 , 2 ,3 , 4 ]
listvar2 = listvar.copy()
listvar.append(5)
print(listvar2)

# copy模块 copy方法
# 方法二
import copy 
listvar = [1 , 2 ,3 , 4 ]
listvar2 = copy.copy(listvar)
listvar.append(6)
print(listvar2)


# 深拷贝  copy 模块下的 deepcopy方法
listvar = [1,2,3,4,[5,6,7]]
listvar2 = copy.deepcopy(listvar)
listvar[-1].append(19)
print(listvar2)

# 二级容器
container = {"a":[1,2,3,4],"b":{"c":1,"d":2}}
container2 = copy.deepcopy(container)
container["b"]["ee"] = "大风车"
print(container)
print(container2)



# listvar = [1,2,3]
# listvar2 = [1,2,3]
# listvar2 = listvar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值