300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 初学者python笔记(元组 字典 集合详解)

初学者python笔记(元组 字典 集合详解)

时间:2022-08-01 10:14:49

相关推荐

初学者python笔记(元组 字典 集合详解)

文章目录

1. 元组(与列表最大的区别就是能否更改)2. 本不可修改元组,但这样就可以修改了3. 字典(dict类):键值对,无序(列表和元组都有序)4. 字典的循环遍历5. 特殊方法创建、取值字典6.在查询字典的键时,若键不存在,则创建该键7. pop()删除在字典中的用法8. 字典键值对修改的2种方法9. 键值对(key与value)的 in 用法10. 五大数据类型分类总结11. 集合的交叉、并、补集12. 字符串拼接的两种方法(百分号、format())

我们可能知道字符串、数字、列表、元组、字典是python中的五大基本数据类型。前面的文章已经介绍过数字、字符串、列表,这篇则是关于元组、字典和集合这方面的一些重点知识。(还会提到元组的修改)

1. 元组(与列表最大的区别就是能否更改)

列表(list类):有序,中括号,元素可以被修改

元组(tuple类):有序,小括号,元素不可被修改且不能删除增加

#元组定义一般在结尾多加一个逗号,以区分方法中的参数tu = (111,22,"alex",(11,22),44,) #定义一个元组#元组可以索引,可以切片s = "asjfdkjkfhg"li = ["safj",123,"alex"]tu = ("alex","age",43,)v = tuple(s) #字符串可以转成元组v1 = tuple(li) #列表可以转成元组v2 = list(tu) #元组也可以转成列表,而且顺序不会改变print(v)print(v1)print(v2)

结果是:

(‘a’, ‘s’, ‘j’, ‘f’, ‘d’, ‘k’, ‘j’, ‘k’, ‘f’, ‘h’, ‘g’)

(‘safj’, 123, ‘alex’)

[‘alex’, ‘age’, 43]

2. 本不可修改元组,但这样就可以修改了

tu = (11,33,"alex",[1314,22],44,True,(13,"一世"),22,)print(tu)tu[3][1] = 520 #列表本身可以修改,所以元组里的列表也可以修改#tu[6][0] = "一生"----->>>>同理,元组不可修改,元组中的元组也不可修改print(tu)

结果是:

(11, 33, ‘alex’, [1314, 22], 44, True, (13, ‘一世’), 22)

(11, 33, ‘alex’, [1314, 520], 44, True, (13, ‘一世’), 22)

Ps:元组的第一级元素不可修改,但二、三…级的元素可以修改

tu = (11,33,"alex",[1314,22,['trust me']],44,True,(13,"一世"),33,)tu[3][1] = 520tu[3].insert(0,'5发4') #在指定的0位置插入n1 = tu.count(33) #计算某元素出现次数n2 = tu.index(44) #返回某元素的索引,即下标print(tu)print(n1)print(n2)

结果是:

(11, 33, ‘alex’, [‘5发4’, 1314, 520, [‘trust me’]], 44, True, (13, ‘一世’), 33)

2

4

3. 字典(dict类):键值对,无序(列表和元组都有序)

列表、元组、字典三者可以无限嵌套,像这样:

info = {"k1": "v1","k2": "v2","True": "v3","k3": [11,22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11,22,)}],"k4" : (11,22,33,44,)}#找到11这个数:v = info["k3"][3]["kk3"][0]print(v)#字典的删除操作:del info["k1"] #会将键值都删除

Ps:数字,字符串,元组,布尔值(要注意1和0是否重复)都可以作为字典的key,而列表和字典不可以作为key,因为它们可修改,是动态的

4. 字典的循环遍历

for item in info.keys(): #循环key,就是循环键值对print(info)for item in info.values(): #循环values,即值print(item)for item in info.keys(): #key与value都循环:print(item,info[item])

因为这里的结果太长了,显得冗余,就不展示了。

关于key与value都循环还有一种简便的写法

#py简化:for k,v in info.items(): #把键值对作为一个itemsprint(k,v)

5. 特殊方法创建、取值字典

#根据序列来创建字典,指定的值都为第二个参数dic = dict.fromkeys(["k1",123,"k3"],123)print(dic)#用dic.get()的好处是,若key对应的值不存,不会报错:v = dic.get('k11111')print(v) #默认返回值是Nonev1 = dic.get('k11111',1111) #若不存在'k11111',则返回1111print(v1)

结果是:

{‘k1’: 123, 123: 123, ‘k3’: 123}

None

1111

6.在查询字典的键时,若键不存在,则创建该键

dic.setdefault(key,[]).append(value)

这个语句可以很好得解决字典中键的查询问题,同时加入该键值对。

7. pop()删除在字典中的用法

pop()删除最大的好处就是删完了可以将值保存个一个变量

dic = {"k1": "v1""k2": "v2"}v = dic.popitem() #随机删除一个键值对并默认将value赋值给vprint(dic,v)k,v = dic.popitem() #随机删除一个键值对并默认将key赋值给k,将value赋值给v

结果是:

{‘k1’: ‘v1’} (‘k2’, ‘v2’)

k1 v1

8. 字典键值对修改的2种方法

#设置值,已存在就不设置,获取原来的值;不存在就设置,获取设置后的值:dic = {"k1": "v1","k2": "v2"}v = dic.setdefault("k1111",123)print(dic,v)dic.update(k1=123,k3=345,k5=322) #更新dic字典,若不存在的key,则添进去print(dic)

结果是:

{‘k1’: ‘v1’, ‘k2’: ‘v2’, ‘k1111’: 123} 123

{‘k1’: 123, ‘k2’: ‘v2’, ‘k1111’: 123, ‘k3’: 345, ‘k5’: 322}

很明显,字典中加入元素也是无序的

9. 键值对(key与value)的 in 用法

dic = {"k1": "v1" }v = "k1" in dicvv = "v1" in dic.values()print(v,vv)

结果为:True True

我们都知道布尔值中的1是真,0是假,其实还有很多False,

布尔值中的假:

None “” () [] {} 0

10. 五大数据类型分类总结

到此为止,五大数据类型就都总结完了,这里再简单分一下类

按是否可变来分

可变:列表、字典、集合

不可变:字符串、数字、元组

s = frozenset(‘hello’) #定义不可变类型集合

s = set(‘hello’) #正常集合是可变的

按访问顺序来分

直接访问:数字

顺序访问:字符串、列表、元组

映射访问:字典

再介绍一种数据类型,集合

(集合:花括号,不重复,无序,集合中元素必须是不可变类型

s = {"alex",11,33,22,"sb"}s = set("hello") #结果是'e','l','h','o' #无序且不重复s.add('3') #添加元素s.pop() #因为无序,所有会随机删除一个元素print(s)

结果是:

{‘l’, ‘o’, ‘3’, ‘e’}

Ps:第二步,将原来的一整串集合设置成了分开放进去的字符串,因为集合不重复,所以集合变成只有4个元素,每个元素都是一个字符

11. 集合的交叉、并、补集

s = {"alex",11,33,22,"sb"}s.remove('sb') #指定删除s.discard('sbbbb') #不存在时不会报错,相当于不操作s1 = {33,22,11,'大黄蜂','鸡排饭','猪'}print(s.union(s1)) #求s与s1的并集print(s | s1) #求s与s1的并集print(s - s1) #求s与s1的差集,s独有的print(s & s1) #求s与s1的交集,s与s1都有的print(s ^ s1) #求s与s1的交叉补集,s独有与s1独有组成的集合

结果是:

{33, ‘alex’, 11, ‘猪’, 22, ‘鸡排饭’, ‘大黄蜂’}

{33, ‘alex’, 11, ‘猪’, 22, ‘鸡排饭’, ‘大黄蜂’}

{‘alex’}

{33, 11, 22}

{‘alex’, ‘鸡排饭’, ‘大黄蜂’, ‘猪’}

12. 字符串拼接的两种方法(百分号、format())

#百分号拼接类似C语言中的输出变量msg = 'I am %s my hobby is %s' %('Ross,','playing game') print(msg)#常用格式化之format后类似一个元组,下标从0开始,多余的舍弃tpl = "i am {1}, age {2}".format("seven","Andy",18) print(tpl)#格式化保留小数点:a = 98.32425545443tp2 = "我有{:.2f}%的可能性会揍你".format(a)print(tp2)

结果是:

I am Ross, my hobby is playing game

i am Andy, age 18

我有98.32%的可能性会揍你

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。