python学习笔记68-78

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这件事的热度褪去了一些,没有刚开始的热情高涨。但是我知道这就是人的天性,总是三分热度,因此我要做的就是对抗天性,保持纯心,把枯燥的事坚持下去,最后一定会有意想不到的收获。还记得晓燕老师的那句话:在希望中欢呼,在苦难中坚持!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值