您的位置:首页 > 编程语言 > Python开发

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

2019-03-24 15:55 489 查看

列表的操作

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐