鱼C论坛

 找回密码
 立即注册
查看: 1044|回复: 0

[学习笔记] 零py-(ep-24)

[复制链接]
发表于 2023-11-16 17:31:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Nicole37 于 2023-11-16 17:31 编辑

序列:
元祖、字符串、列表:都属于序列
对序列的操作的运算符和函数
1、运算符:+,*
  1. [1,2,3]+[4,5,6]
  2. [1, 2, 3, 4, 5, 6]
  3. (1,2,3)+(4,5,6)
  4. (1, 2, 3, 4, 5, 6)
  5. "sdf"*2
  6. 'sdfsdf'
  7. #对于增量赋值
  8. #ID 表示返回代表指定对象的唯一标识的整数值(身份证)
  9. #对于可变序列e.g列表来说
  10. s=[1,2,5]
  11. id(s)
  12. 34610376
  13. s*=2
  14. s
  15. [1, 2, 5, 1, 2, 5]
  16. id(s)
  17. 34610376
  18. #序列的内容变了,但id值不变
  19. #对于不可变序列:元祖和字符串,内容变,整体id值也会变
  20. r=(1,5)
  21. id(r)
  22. 68376712
  23. r*=3
  24. r
  25. (1, 5, 1, 5, 1, 5)
  26. id(r)
  27. 63438200
复制代码

2、is & is not用于检测对象的id值是否相等,判断是否是同一对象。同一性运算符
in & not in 判断包含问题,in 判断某个元素是否包含在序列中
  1. #is isnot
  2. x="love"
  3. y="love"
  4. x is y
  5. True
  6. x=[1,2]
  7. y=[1,2]
  8. x is not y
  9. True
  10. #in not in
  11. "ij" in "wefeij"
  12. True
  13. [1] in [[1],[2]]
  14. True
  15. "i" not in "i lobr uou"
  16. False
复制代码

3、del语句:用于删除一个或多个指定对象/用于删除可变序列中的指定元素
  1. #用del语句删除
  2. x=[1,2,3]
  3. y="fgd"
  4. del x,y
  5. x
  6. Traceback (most recent call last):
  7.   File "<pyshell#42>", line 1, in <module>
  8.     x
  9. NameError: name 'x' is not defined
  10. y
  11. Traceback (most recent call last):
  12.   File "<pyshell#43>", line 1, in <module>
  13.     y
  14. NameError: name 'y' is not defined
  15. #del 用于删除可变序列中的指定元素
  16. a = [1,2,3,4,5]
  17. del a[0]
  18. a
  19. [2, 3, 4, 5]
  20. #用切片来删除指定元素
  21. a[0:1]=[]
  22. a
  23. [3, 4, 5]
  24. #跳步
  25. p=[1,2,3,4,5]
  26. del p[::2]#从开始到最后删除元素,步进为2,删除1,跳两步删除3,跳两步删除5
  27. p
  28. [2, 4]
复制代码
  1. #斩草除根
  2. a =[1,2,3]
  3. del a
  4. a
  5. Traceback (most recent call last):
  6.   File "<pyshell#66>", line 1, in <module>
  7.     a
  8. NameError: name 'a' is not defined
  9. #清空内容
  10. a =[1,2,3]
  11. del a[::]
  12. a
  13. []
  14. #可以用clear实现
  15. a.clear()
  16. a
  17. []
复制代码


作业:
编程0:
  1. s = input("请输入字符串s:")
  2. a=[]
  3. for i in s:
  4.     a.append(i)
  5. t = input("请输入字符串t:")
  6. b=[]
  7. for j in t:
  8.     b.append(j)

  9. c=[]
  10. for j in range(len(a)):
  11.     if a[j] not in b:
  12.         print("no")
  13.         break
  14.     else:
  15.         if a[j] in b:
  16.             c.append(b.index(a[j]))
  17. while len(c)==len(a):
  18.     for i in range(len(c)-1):
  19.         if int(c[i])<int(c[i+1]):
  20.             continue
  21.     print("ok")
  22.     break
复制代码

1:
  1. s = input("请输入")
  2. a=[]
  3. b=[]
  4. d=[]
  5. l=0
  6. #字符串变列表,应用列表的排序
  7. for i in s:
  8.     a.append(i)
  9. a.sort()
  10. for i in a:
  11.     d.append(str(i))
  12. f="".join(d)#f是从小到大
  13. a.sort(reverse=True)
  14. for i in a:
  15.     b.append(str(i))
  16. c="".join(b)#c是从大到小
  17. #把最小奇数找出来g
  18. for i in f:
  19.     if int(i)%2!=0:
  20.         g=i
  21.         l=1 #l为找到有奇数的情况下,执行下一步的标志!
  22.         break
  23.     else:
  24.         continue
  25. while l==1:  #当有奇数时
  26.     if int(c)%2!=0:  #如果从大到小排序恰好是奇数,则找到
  27.         print("输出",c)
  28.     else:
  29.         f=c.find(g)
  30.         u=c[0:f]
  31.         v=c[f+1::]
  32.         h=u+v+g
  33.         print("输出",h)#如果不是奇数,就把最小奇数拿出来放到末尾,利用字符串的拼接功能输出
  34.         break
  35. while l==0: #当纯偶数时输出0
  36.     print("输出",0)
  37.     break
  38.    
复制代码

作业答案:
0:在 Python 中,每一个对象都有三个基本属性:唯一标识、类型和值
1:根据是否能被修改这一特性,可以将序列分为可变序列和不可变序列:比如列表就是可变序列,而元组和字符串则是不可变序列
2:如果两个对象 a 和 b 的 id 值相同,那么 a is b 的运算结果就一定是 True
动手:
0:
  1. s = input("请输入字符串s:")
  2. t = input("请输入字符串t:")
  3.    
  4. n = len(s)
  5. m = len(t)
  6.    
  7. j = k = 0
  8. while j < n and k < m:
  9.     if s[j] == t[k]:
  10.         j += 1
  11.     k += 1
  12.    
  13. if j == n:
  14.     print("字符串 s 是字符串 t 的子序列。")
  15. else:
  16.     print("字符串 s 不是字符串 t 的子序列。")
复制代码


代码清单的解题思路是利用了 “双指针” 追踪的方法。
j 和 k 是两个负责追踪匹配的指针,分别指向字符串 s 和 t 的初始位置,然后每次判断 s[j] 与 t[k] 是否相等,如果相等则两个追踪指针同时移动到下一个位置继续判断
由于 “子序列” 的判定是允许中间 “删除一些字符”,因此每当 s[j] 与 t[k] 不相等的时候,k 指针移动到下一位,继续尝试匹配
最终如果 j 等于字符串 s 的长度,也就说明了 s 整个字符串成功地被遍历了一遍,即证明 s 是 t 的子序列。

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 00:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表