1.前言
隔离日记DAY5。
2.学习内容
1.为什么要将元组设计成不可变序列
t=(10,[20,30],9) print(type(t)) print(t[0],type(t[0]),id(t[0])) print(t[1],type(t[1]),id(t[1])) print(t[2],type(t[2]),id(t[2])) '''尝试将t[1]修改为100''' print(id(100)) #t[1]=100#元组不允许修改元素 '''由于[20,30]列表,而列表是可变序列,所以可以向列表中添加元素,而列表的内存地址不变''' t[1].append(100)#向列表中添加元素 print(t) print(t,id(t[1]))
注意元组t中有个元素是列表,当尝试把t[1](列表)整个修改成100时,会报错,因为元组不允许修改元素,但是列表是可变序列啊,我们可以向t[1](列表)中进行增删改操作,且列表的内存地址不变。t[1].append(100)#向列表中添加元素。
2.元组的遍历
'''元组的遍历''' t=('python','world',98) '''第一种获取元组元素的方式,使用索引''' print(t[0]) print(t[1]) print(t[2]) #print(t[3]) #IndexError: tuple index out of range超出索引 '''遍历元组''' for item in t: print(item)#item代表元组中每一个元素
可以使用索引对元组中的元素进行获取,但是我们可能不知道元组中有多少元素。接下来可以使用for item in t:进行遍历
3.集合的概述与创建
#集合的创建方式 '''第一种创建方式 使用{}''' s={2,3,4,5,5,6,7,7}#字典中的key不能重复,集合中元素不能重复 print(s)#{2, 3, 4, 5, 6, 7} '''第二种创建方式,使用set()进行创建''' s1=set(range(6)) print(s1,type(s1)) s2=set([1,2,23,3,3,3,3]) print(s2,type(s2)) s3=set((1,2,5,9,6,6,)) print(s3)#{1, 2, 5, 6, 9} 注意重复元素只留下了一个,且元素顺序改变了,证明集合中的元素是无序的 s4=set('python') print(s4,type(s4))#{'n', 't', 'y', 'h', 'o', 'p'} <class 'set'>无序的!!! s5=set({12,3,4,55})#{3, 12, 4, 55} print(s5) #定义一个空集合 s6={}#<class 'dict'> 字典类型 print(type(s6)) #不能直接用花括号定义空集合,因为字典也是用花括号{} s7=set()
-
第一种创建方式 使用{ }
-
第二种创建方式,使用set()进行创建 s1=set(range(6))可以创建一个包含0 1 2 3 4 5 的集合
-
当你创建的集合中有重复元素时,集合输出后重复元素只留下了一个,且元素顺序可能会改变,也证明了集合中的元素是无序的。
-
定义一个空集合时,要是直接用s6={}是不行的,因为字典也是用花括号{},要用s7=set()
4.集合的判断操作
#集合的相关操作 '''集合元素的判断操作''' s={10,20,30,405,60} print(10 in s)#True print(100 in s) #F print(10 not in s)#False '''集合元素的新增操作''' s.add(80)#一次加一个 print(s)#{80, 20, 405, 10, 60, 30} s.update({200,400,800})#一次至少加一个 print(s)#{800, 200, 10, 80, 400, 20, 405, 60, 30} s.update((78,64,56)) print(s)#{800, 64, 200, 10, 78, 80, 400, 20, 405, 56, 60, 30} '''集合元素的删除操作''' s.remove(10) print(s) #s.remove(100) s.discard(100)#使用discard移除元素不要求元素必须在,不会报异常 print(s)#KeyError: 100 使用remove移除元素要求元素必须要存在,否则会报错 s.pop() print(s) s.pop() print(s) #s.pop(400)TypeError: set.pop() takes no arguments (1 given) print(s)#pop方法可以删除任意一个参数,但是是无参的,不能指定 s.clear()#清空集合元素 print(s)
-
s.discard(100)#使用discard移除元素不要求元素必须在,不会报异常,s.remove(100)使用remove移除元素要求元素必须要存在,否则会报错
-
s.pop(),pop方法可以删除任意一个参数,但是是无参的,不能指定
5.集合间的关系
'''两个集合是否相等''' s={10,20,30,40} s2={30,40,20,10} print(s==s2)#True集合无序,所以元素相同就相等,无关顺序 print(s!=s2) '''一个集合是否是另一个集合的子集'''#issubset sub代表向下,所以是子集的意思 s1={10,20,30,40,50,60} s2={10,20,30,40} s3={10,20,90} print(s2.issubset(s1))#true print(s3.issubset(s1))#false '''一个元素是否是另一个元素的超集'''#issuperset sup代表向上,所以是超集 print(s1.issuperset(s2))#True print(s1.issuperset(s3))#False '''两个集合是否含有交集''' print(s2.isdisjoint(s3)) #False isdisjoint交集 joint为相同的意思,所以是交集
集合无序,所以集合中元素相同就相等,无关顺序。
注意子集,超集,交集的英文都是有迹可循的
6.集合生成式
#列表生成式 lst=[i*i for i in range(6)] print(lst)#[0, 1, 4, 9, 16, 25] #集合生成式 s={i*i for i in range} print(s)
列表生成式和集合生成式类似,只不过一个是[ ],一个是{ }
-
小总结
7.字符串的创建驻留机制
#字符串的驻留机制 a='python' b="python" c='''python''' print(a,id(a)) print(b,id(b)) print(c,id(c))
这节课听的迷迷糊糊,等再遇到了再针对学习吧
8.字符串的常用操作_字符串的查询
#字符串的查询操作 s='hello,hello' print(s.index('lo'))#lo第一次出现的位置 print(s.find('lo')) print(s.rindex('lo'))#lo最后一次出现的位置 print(s.rfind('lo')) #print(s.index('k'))#用index查找不存在的元素,报错ValueError: substring not found print(s.find('k'))#用find查找不存在的元素,不会报错,得-1 #print(s.rindex('k'))#ValueError: substring not found print(s.rfind('k'))#-1 #查找字符串元素建议使用find 或 rfind 不会报错
查找字符串元素建议使用find 或 rfind ,不会报错
9.字符串的常用操作_字符串的大小写转换
#字符串中的大小写转换的方法 s='hello,python' a=s.upper()#转大写 print(a,id(a)) print(s,id(s))#字符串是不可变序列,转成大写后将会产生新的字符串对象 b=s.lower()#转小写,转换之后,会产生新的字符串对象 print(b,id(b)) print(s,id(s)) s2='hello,Python' print(s2.swapcase())#大写变小写,小写变大写。swap好像是交换的意思 print(s2.title())#每个英文单词的首字母变大写,title就是开头的意思
a=s.upper()#转大写 b=s.lower()#转小写,转换之后,会产生新的字符串对象
s2='hello,Python' print(s2.swapcase())#大写变小写,小写变大写。swap好像是交换的意思
print(s2.title())#每个英文单词的首字母变大写,title就是开头的意思
10.字符串的常用操作_字符串内容对齐操作
s='hello,Python' '''居中对齐''' print(s.center(20,'*'))#中间对齐 ****hello,Python**** '''左对齐''' print(s.ljust(20,'*'))#hello,Python******** print(s.ljust(10))#参数宽度小于本身宽度,默认无变化 print(s.ljust(20))#填充符不写,默认是空格 '''右对齐''' print(s.rjust(20,'*'))#********hello,Python print(s.rjust(20))# hello,Python默认是空格 print(s.rjust(10))#宽度小于实际长度,返回原字符 '''右对齐,使用0进行填充''' print(s.zfill(20))#00000000hello,Python print(s.zfill(10)) print('-8910'.zfill(8))#加上减号一共8位,注意0加到了减号后面 -0008910
3.结束语
隔离的第五天就要结束了,这几天几乎每天很长时间都对着pycharm那个黑色界面,感觉稍稍的有些倦了,感觉对于学习python这件事的热度褪去了一些,没有刚开始的热情高涨。但是我知道这就是人的天性,总是三分热度,因此我要做的就是对抗天性,保持纯心,把枯燥的事坚持下去,最后一定会有意想不到的收获。还记得晓燕老师的那句话:在希望中欢呼,在苦难中坚持!