python容器类型存放在哪里_我的python学习之路-容器类型数据操作

本文内容:

一、流程控制

二、字符串的相关操作,字符串的格式化 format

三、列表、元组的操作

四、 列表、元组的相关方法

五、字典的相关函数

六、集合相关的操作

一、流程控制

分为三种:1、 顺序结构  2、分支结构 3、 循环结构

1、顺序结构

默认代码从上到下依次执行

2、分支结构

1、单分支结构

study_bug = "xx"

if study_bug == "xx":print("你的年薪最高")

2、双分支结构

goodman = "xx"

if goodman == "xx":print("勤工俭学")else:print("好吃懒做")

3、多分支结构

1 youqian =False2 youfang =False3 youche =False4 youyanzhi =True5 youtili =True6

7 if youqian ==True:8 print("老娘要嫁给你1")9 elif youfang ==True:10 print("老娘要嫁给你2")11 elif youche ==True:12 print("老娘要嫁给你3")13 elif youyanzhi ==True:14 print("老娘要嫁给你4")15 elif youtili ==True:16 print("老娘要嫁给你5")17 else:18 print("你是个好人..")

View Code

4、巢状分支

单项分支,双向分支,多项分支的互相嵌套的一种语法

1 youqian =True2 youfang =True3 youche =False4 youyanzhi =True5 youtili =False6

7 if youqian ==True:8 if youfang ==True:9 if youche ==True:10 if youyanzhi ==True:11 if youtili ==True:12 print("别想跑了,老娘要定了...")13 else:14 print("上道边,重金求子")15 else:16 print("请你去泰国整容...")17 else:18 print("你去买了布加迪威航")19 else:20 print("你是个好人 ..")

View Code

3、 循环结构

特点: 减少冗余代码,提升代码效率,while for 两种循环、

1、while 循环

#打印1 ~ 100#第一步

i = 1

#第二步

while i <= 100:#第四步

print(i)#第三步

i += 1 #i = i + 1

2. for循环

适用于  可迭代性数据(Iterable)(容器类型数据,range对象,迭代器)

#遍历字符串

container = "王寅要加油"

#遍历列表

container = ["王生福","敬旭阳","熊海瑞","梁瑞卿"]#遍历元组

container = ("王生福","敬旭阳","熊海瑞","梁瑞卿")#遍历集合

container = {"王生福","敬旭阳","熊海瑞","梁瑞卿"}#遍历字典 (遍历数据时,默认遍历的是字典的键)

container = {"wsf":"王生福","jxy":"敬旭阳","xhr":"小黄人"}for i incontainer:print(i)

#遍历不等长的二级容器

container = [("杨特","白金鸽","郝建康"),["吕菲菲","王寅"],{"赵沈阳"}]for i incontainer:

for j ini :print(j)

#遍历等长的二级容器,采用变量解包的方式

container = [("马保国","马户","马累"),["王健林","王思聪","王寅"],("马云","马化腾","马伊琍")]for a,b,c incontainer:print(a,b,c)

2.1 range的三种用法对象 (留头舍尾)

1.range( start , end , step )

for i in range(1,10,3): #1 4 7 print(i)

2. range( start , end )

for i in range(3,7): #3 4 5 6 print(i)

3.range(end) 从0开始,留头舍尾

for i in range(3):print(i)

4、pass、break、continue 关键字的应用

1)、pass 用作来占位

if 5 == 5:pass

whileTrue:pass

2)、break 终止当前循环 (只能应用在循环之中)

i = 1

while i <= 10:print(i)if i == 5:breaki+= 1

3)、continue 跳过当前循环,从下一次循环开始 (只能应用在循环之中)

for i in range(1,11):if i == 5:continue

print(i)

二、字符串的相关操作,字符串的格式化 format

1、字符串的相关操作

第一部份

#part1#*capitalize 字符串首字母大写

strvar = "how old are you"res=strvar.capitalize()print(res)#*title 每个单词的首字母大写

strvar = "how are you"res=strvar.title()print(res)#*upper 将所有字母变成大写

strvar = "to be or NOT to be"res=strvar.upper()print(res)#*lower 将所有字母变成小写

res =strvar.lower()print(res)#*swapcase 大小写互换

res =strvar.swapcase()print(res)#*len 计算字符串的长度

res =len(strvar)print(res)#*count 统计字符串中某个元素的数量

"""count(字符,[start,end])"""strvar= "to be or NOT to be"res= strvar.count("b")

res= strvar.count("b",4)

res= strvar.count("b",4,8)print(res)#*find 查找某个字符串第一次出现的索引位置 (推荐)

"""find(字符,[start,end]) 如果找不到对应字符,返回-1"""strvar= "oh father this is my favorate dog"res= strvar.find("this")

res= strvar.find("is",15)

res= strvar.find("is",15,16) #-1

print(res)#*index 与 find 功能相同 find找不到返回-1,index找不到数据直接报错 (了解)#res = strvar.index("is",15,16) # error#print(res)

#*startswith 判断是否以某个字符或字符串为开头

"""startswith(字符,[start,end]) 成立返回True,反之返回False"""strvar= "oh father this is my favorate dog"res= strvar.startswith("oh")

res= strvar.startswith("oh",3)

res= strvar.startswith("father",3,9)print(res)#*endswith 判断是否以某个字符或字符串结尾

"""endswith(字符,[start,end]) 成立返回True,反之返回False"""strvar= "oh father this is my favorate dog"res= strvar.endswith("dog")

res= strvar.endswith("dog",-4)

res= strvar.endswith("dog",-4,-2) #d

print(res)

View Code

第二部分

#*isupper 判断字符串是否都是大写字母

strvar = "TO BE"res=strvar.isupper()print(res)#*islower 判断字符串是否都是小写字母

res =strvar.islower()print(res)#*isdecimal 检测字符串是否以数字组成 必须是纯数字

strvar = "12345"res=strvar.isdecimal()print(res)

#*split 按某字符将字符串分割成列表(默认字符是空格)

"""split("字符",切割次数) 从左至右"""strvar= "you can you up no can no bb"lst=strvar.split()

strvar= "you@can@you@up"lst= strvar.split("@")#从左至右切割

lst = strvar.split("@",1)#从右至左切割

lst = strvar.rsplit("@",1)print(lst)#*join 按某字符将列表拼接成字符串(容器类型都可)

lst = ['you','can','you','up']

res= "@".join(lst)print(res)#*center 填充字符串,原字符居中 (默认填充空格)

strvar = "***"res= strvar.center(10) #默认填充空格

res = strvar.center(10,"#") #可选择填充的符号

print(res)#*strip 默认去掉首尾两边的空白符(空格\n \t \r ... )

strvar = "刘德华"

print(strvar.strip())#rstrip 去掉右边某个字符

print(strvar.rstrip())#lstrip 去掉左边某个字符

print(strvar.lstrip())#*replace()

"""功能: 把字符串的旧字符换成新字符

格式: 字符串.replace('旧字符','新字符'[, 限制替换的次数])

返回值: 替换之后的字符串"""strvar= "可爱的小狼狗喜欢吃肉,有没有,有没有,还有没有"res= strvar.replace("有没有","真没有")#替换一次

res = strvar.replace("有没有","真没有",1)print(res)

View Code

2、字符串的格式化 format

1、顺序传参

strvar = "{}向{}开了一枪,饮蛋而亡".format("王寅","菲菲")print(strvar) # 王寅向菲菲开了一枪,饮蛋而亡

2、索引传参

strvar = "{1}向{0}开了一枪,饮蛋而亡".format("王寅","菲菲")print(strvar) #菲菲向王寅开了一枪,饮蛋而亡

3、关键字传参

strvar = "{who1}从后面掏了{who2}一下,回头一记天马流星拳".format(who1="王寅",who2="方进顺")print(strvar) #王寅从后面掏了方进顺一下,回头一记天马流星拳

4、容器类型数据传参

strvar = "{0[1]}亲了{1[0]}一下,鼻血直冒三万多尺".format(["王钊","郝建康"],("荷叶","王永捐"))strvar = "{group2[1]}亲了{group1[1]}一下,鼻血直冒三万多尺".format(group1=["王钊","郝建康"],group2 = ("荷叶","王永捐"))#group2[yj] 如果是字典在format格式化字符串的使用中,不能加上引号""

strvar = "{group2[yj]}亲了{group1[0]}一下,鼻血直冒三万多尺".format(group1=["王钊","郝建康"],group2 = {"wz":"王兆","yj":"永捐"})print(strvar)

5、format 填充符号的使用

^ :原字符串居中

< :原字符串居左

> :原字符串居右

who:*^10

* :要填充的符号

^ :原字符串居中

10: 填充的字符串 +原字符串

strvar="{who:*^7}在在{where:->6}坐着,看风景,感觉{feel:!<10}" .format(who="小明",where="阳台",feel="高兴")

strvar="{0:*^7}在在{1:->6}坐着,看风景,感觉{1:!<10}" .format("小明","阳台","高兴")print(strvar)#**小明***在在----阳台坐着,看风景,感觉阳台!!!!!!!!

6、进制转换等特殊符号的使用(:d :s :f)

(1):d 整型占位符 :2d 占三位

strvar= "小明买了{:<2d}个苹果" .format(5)print(strvar)#小明买了5 个苹果

(2):f 浮点型占位符 (必须是浮点型) 默认小数点保留六位

strvar = "于盛林毕业了,一个月工资:{:f}".format(9.91234567)#:.2f 小数点保留两位 存在四舍五入

strvar = "于盛林毕业了,一个月工资:{:.2f}".format(9.91934567)print(strvar) #于盛林毕业了,一个月工资:9.92

(3):s 字符串占位符 (必须是字符串)

strvar = "{:s}".format("欢庆真胖~")print(strvar) #欢庆真胖~

(4):, 金钱占位符

strvar = "{:,}".format(12345678)print(strvar) #12,345,678

三、列表、元组的操作

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

lst1 = ["梁新宇","孟凡伟"]

lst2= ["孙接口","王永捐"]

res= lst1 +lst2print(res) #['梁新宇', '孟凡伟', '孙接口', '王永捐']

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

lst1 = ["梁新宇","孟凡伟"]

res= lst1 * 3

print(res) #['梁新宇', '孟凡伟', '梁新宇', '孟凡伟', '梁新宇', '孟凡伟']

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

1 lst = ["曹培显","欢庆","刘玉波","耿择时","家营和","黄常见","刘灵镇","孙翔宇"]2 #(1)[开始索引:] 从开始索引截取到列表的最后

3 res = lst[2:]4 print(res) #['刘玉波', '耿择时', '家营和', '黄常见', '刘灵镇', '孙翔宇']

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

6 res = lst[:7]7 print(res) #['曹培显', '欢庆', '刘玉波', '耿择时', '家营和', '黄常见', '刘灵镇']

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

9 res = lst[3:5]10 print(res) #['耿择时', '家营和']

11 #(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值

12 #从左到右 正向截取

13 res = lst[::3]14 print(res) #['曹培显', '耿择时', '刘灵镇']

15 #从右向左 逆向截取

16 res = lst[::-1]17 print(res) #['孙翔宇', '刘灵镇', '黄常见', '家营和', '耿择时', '刘玉波', '欢庆', '曹培显']

View Code

4、列表的获取 (同元组)

res = lst[1]print(res) #欢庆

5、列表的修改( 可切片 )

1)、一次修改一个

lst=[1,2,3,4,5,6,7,8]lst[0]="a"

print(lst) #['a', 2, 3, 4, 5, 6, 7, 8]

2)、一次修改多个 ,等号右边必须是Iterable(容器类型的数据 range对象 迭代器)

lst=[1,2,3,4,5,6,7,8]lst[1:3]="abc"

print(lst) #1, 'a', 'b', 'c', 4, 5, 6, 7, 8]

3)、一次修改多个(带步长) 截取几个,修改几个

lst=[1,2,3,4,5,6,7,8]lst[::3]=["a","b","c"]print(lst) #['a', 2, 3, 'b', 5, 6, 'c', 8]

6、列表的删除(可切片)

1)、 一次删除一个

lst=[1,2,3,4,5,6,7,8]dellst[0]print(lst) #[2, 3, 4, 5, 6, 7, 8]

2)、一次删除多个

lst=[1,2,3,4,5,6,7,8]del lst[0:2]print(lst) #[3, 4, 5, 6, 7, 8]

3)、注意点 (改写法删除的是res 变量,不是列表)

lst=[1,2,3,4,5,6,7,8]

res= lst[0:2]delresprint(lst) #[1,2,3,4,5,6,7,8]

四、列表、元组的相关方法

1、增加

1、append 向列表的末尾添加新的元素

lst = [1]

lst.append(2)print(lst) #[1, 2]

2、insert 在指定索引之前插入元素

lst=[1,2]lst.insert(0,3)print(lst) #[3, 1, 2]

3、extend 迭代追加所有元素

必须是Iterable这样的可迭代性数据(容器类型数据、range对象、迭代器)

lst1=[4,5]lst1="abc"

lst.extend(lst1)print(lst) #[3, 1, 2, 'a', 'b', 'c']

2、删除

1、pop 通过指定索引删除元素,若没有索引移除最后那个 (推荐)

lst = [1,2,3,4,5,5]lst.pop(2)print(lst) #[1,2,4,5,5]

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

lst = [1,2,3,4,5,5]

lst.remove(5)print(lst) #[1,2,3,4,5]

3.clear 清空列表

lst.clear()print(lst) #[]

3、其他操作

1、index 获取某个值在列表中的索引

lst = [1,2,3,4,5,5]res = lst.index(5)#res = lst.index(6) #不存在报错

print(res) #4

2、count 元素的数量

lst = [1,2,3,4,5,5]res = lst.count(5)print(res) #2

3、sort() 列表排序 (基于原有列表进行修改)

针对于数字:

#正序

lst=[-1,-4,-6,45,1,100]lst.sort()print(lst) #[-6, -4, -1, 1, 45, 100]

#反向

lst=[-1,-4,-6,45,1,100]lst.sort(reverse=True)print(lst) #[100, 45, 1, -1, -4, -6]

针对于字母:

ascii 编码进行排序 大小写字母ascii相差32

按照ascii编码的大小,一位一位的进行比较,默认从小到大

针对于中文:

能排序,无规律可循

4、reverse 列表反转操作

lst=[1,2,3]lst.reverse()print(lst) #[3, 2, 1]

元组相关操作和方法

元组的相关操作除了不能修改和删除其中的元素之外 , 剩下操作都和列表相同.

元组里面能用的方法只有 index 和 count

五、字典的相关函数

1、增加

(1)使用键值来来增加

dic ={}

dic["top"] = "廉颇"dic["middle"] = "妲己"dic["bottom"] = "孙尚香"

print(dic) #{'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香'}

(2)  fromkeys()  使用一组键和默认值创建字典 (快速定义字典)

lst = ["a","b",'c']#fromkeys(塞满键的容器,默认值)

dic ={}.fromkeys(lst,None)print(dic) #{'a': None, 'b': None, 'c': None}

注意点 慎用

dic ={}.fromkeys(lst,[])dic["a"].append(1)print(dic) #{'a': [1], 'b': [1], 'c': [1]}

2、删除

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

dic = {'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香',"jungle":"猴子","support":"小明"}#指定键删除对应的键值对

res = dic.pop("jungle")#若没有该键可设置默认值,预防报错

res = dic.pop("middle123434","抱歉,该键不存在")print(res)print(dic) #抱歉,该键不存在

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

dic = {'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香',"jungle":"猴子","support":"小明"}res =dic.popitem()print(res) #('support', '小明')

print(dic) #{'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香', 'jungle': '猴子'}

(3)clear()  清空字典

1 dic.clear()2 print(dic) #{}

3、改变

(1)update() 批量更新(有该键就更新,没该键就添加

dic = {'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香'}

#没该键就添加

dic_new = {"support":"瑶"}dic.update(dic_new)print(dic) #{'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香', 'support': '瑶'}

#有该键就更新

dic_new = {'middle': '武则天'}dic.update(dic_new)print(dic) #{'top': '廉颇', 'middle': '武则天', 'bottom': '孙尚香', 'support': '瑶'}

4、查找

(1)get()    通过键获取值(若没有该键可设置默认值)

dic = {'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香'}#没有该键不报错返回None

res = dic.get("top123")res = dic.get("top123","抱歉,改键不存在")#res = dic["top"]

print(res)

5、其他方法

(1)keys()   将字典的键组成新的可迭代对象

dic = {'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香'}res =dic.keys()print(res , type(res))#dict_keys(['top', 'middle', 'bottom'])

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

dic = {'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香'}res =dic.values()print(res , type(res))#dict_values(['廉颇', '妲己', '孙尚香'])

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

dic = {'top': '廉颇', 'middle': '妲己', 'bottom': '孙尚香'}res =dic.items()print(res , type(res))#dict_items([('top', '廉颇'), ('middle', '妲己'), ('bottom', '孙尚香')])

for k,v indic.items():print(k,v)'''top 廉颇

middle 妲己

bottom 孙尚香'''

六、集合相关的操作

1、交差并补

1 set1 = {"郭杰瑞","药水哥","张大仙","王文"}2 set2 = {"蔡徐坤","王力宏","郭德纲","王文"}3

4 #1.交集

5 res =set1.intersection(set2)6 print(res) #{'王文'}

7

8 #简写

9 res = set1 &set210 print(res)11

12 #2.差集

13 res =set1.difference(set2)14 print(res) #{'郭杰瑞', '张大仙', '药水哥'}

15

16 #简写

17 res = set1 -set218 print(res)19 #3.union 并集

20 res =set1.union(set2)21 print(res) #{'王文', '郭德纲', '张大仙', '王力宏', '郭杰瑞', '蔡徐坤', '药水哥'}

22

23 #简写

24 res = set1 |set225 print(res)26

27 #4.symmetric_difference

28 res =set1.symmetric_difference(set2)29 print(res) #{'郭德纲', '张大仙', '王力宏', '郭杰瑞', '蔡徐坤', '药水哥'}

30

31 #简写

32 res = set1 ^set233 print(res)

2、其他方法

(1)issubset()   判断是否是子集

set1 = {"王文","王宝强","王健林","王思聪"}set2 = {"王文","王宝强"}res =set2.issubset(set1)print(res)#简写

res = set2

(2)issuperset() 判断是否是父集

set1 = {"王文","王宝强","王健林","王思聪"}set2 = {"王文","王宝强"}res =set1.issuperset(set2)print(res)

#简写

res = set1 >set2print(res

(3)isdisjoint() 检测两集合是否不相交  不相交 True  相交False

set1 = {"王文","王宝强","王健林","王思聪"}set2 = {"王文","王宝强"}res =set1.isdisjoint(set2)print(res) #False

3、增加

1.一次加一个

setvar = {"周润发"}setvar.add("周星驰")setvar.add("周树人")print(setvar)

2.一次加一堆

update() 迭代着增加

setvar = {"马诺"}lst = "abc"

setvar.update(lst)print(setvar) #{'c', 'a', '马诺', 'b'}

4、删除

(1)clear()   清空集合

setvar.clear()print(setvar)

(2)pop()     随机删除集合中的一个数据

setvar = {'张大仙', '郭杰瑞', '药水哥', '郭德纲', '蔡徐坤', '王力宏'}res =setvar.pop()print(res)print(setvar)

(3)remove()  删除集合中指定的值(不存在则报错) (了解)

setvar.remove("张大仙")#setvar.remove("张大仙1233434343") error

print(setvar)

(4)discard() 删除集合中指定的值(不存在的不删除 推荐使用)

setvar.discard("郭杰瑞")setvar.discard("郭杰瑞11122333")print(setvar)

5、冰冻集合 (扩展)

冰冻集合一旦创建,不能在进行任何修改,只能做交差并补操作

frozenset 可强转容器类型数据变为冰冻集合

lst = ["马蓉","马化腾","马户","马云","码农"]fz =frozenset(lst)print(fz,type(fz)) #frozenset({'马化腾', '码农', '马户', '马蓉', '马云'})

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值