零py-(ep-24)
本帖最后由 Nicole37 于 2023-11-16 17:31 编辑序列:
元祖、字符串、列表:都属于序列
对序列的操作的运算符和函数:
1、运算符:+,*
+
(1,2,3)+(4,5,6)
(1, 2, 3, 4, 5, 6)
"sdf"*2
'sdfsdf'
#对于增量赋值
#ID 表示返回代表指定对象的唯一标识的整数值(身份证)
#对于可变序列e.g列表来说
s=
id(s)
34610376
s*=2
s
id(s)
34610376
#序列的内容变了,但id值不变
#对于不可变序列:元祖和字符串,内容变,整体id值也会变
r=(1,5)
id(r)
68376712
r*=3
r
(1, 5, 1, 5, 1, 5)
id(r)
63438200
2、is & is not用于检测对象的id值是否相等,判断是否是同一对象。同一性运算符
in & not in 判断包含问题,in 判断某个元素是否包含在序列中
#is isnot
x="love"
y="love"
x is y
True
x=
y=
x is not y
True
#in not in
"ij" in "wefeij"
True
in [,]
True
"i" not in "i lobr uou"
False
3、del语句:用于删除一个或多个指定对象/用于删除可变序列中的指定元素
#用del语句删除
x=
y="fgd"
del x,y
x
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
x
NameError: name 'x' is not defined
y
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
y
NameError: name 'y' is not defined
#del 用于删除可变序列中的指定元素
a =
del a
a
#用切片来删除指定元素
a=[]
a
#跳步
p=
del p[::2]#从开始到最后删除元素,步进为2,删除1,跳两步删除3,跳两步删除5
p
#斩草除根
a =
del a
a
Traceback (most recent call last):
File "<pyshell#66>", line 1, in <module>
a
NameError: name 'a' is not defined
#清空内容
a =
del a[::]
a
[]
#可以用clear实现
a.clear()
a
[]
作业:
编程0:
s = input("请输入字符串s:")
a=[]
for i in s:
a.append(i)
t = input("请输入字符串t:")
b=[]
for j in t:
b.append(j)
c=[]
for j in range(len(a)):
if a not in b:
print("no")
break
else:
if a in b:
c.append(b.index(a))
while len(c)==len(a):
for i in range(len(c)-1):
if int(c)<int(c):
continue
print("ok")
break
1:
s = input("请输入")
a=[]
b=[]
d=[]
l=0
#字符串变列表,应用列表的排序
for i in s:
a.append(i)
a.sort()
for i in a:
d.append(str(i))
f="".join(d)#f是从小到大
a.sort(reverse=True)
for i in a:
b.append(str(i))
c="".join(b)#c是从大到小
#把最小奇数找出来g
for i in f:
if int(i)%2!=0:
g=i
l=1 #l为找到有奇数的情况下,执行下一步的标志!
break
else:
continue
while l==1:#当有奇数时
if int(c)%2!=0:#如果从大到小排序恰好是奇数,则找到
print("输出",c)
else:
f=c.find(g)
u=c
v=c
h=u+v+g
print("输出",h)#如果不是奇数,就把最小奇数拿出来放到末尾,利用字符串的拼接功能输出
break
while l==0: #当纯偶数时输出0
print("输出",0)
break
作业答案:
0:在 Python 中,每一个对象都有三个基本属性:唯一标识、类型和值
1:根据是否能被修改这一特性,可以将序列分为可变序列和不可变序列:比如列表就是可变序列,而元组和字符串则是不可变序列
2:如果两个对象 a 和 b 的 id 值相同,那么 a is b 的运算结果就一定是 True
动手:
0:s = input("请输入字符串s:")
t = input("请输入字符串t:")
n = len(s)
m = len(t)
j = k = 0
while j < n and k < m:
if s == t:
j += 1
k += 1
if j == n:
print("字符串 s 是字符串 t 的子序列。")
else:
print("字符串 s 不是字符串 t 的子序列。")
代码清单的解题思路是利用了 “双指针” 追踪的方法。
j 和 k 是两个负责追踪匹配的指针,分别指向字符串 s 和 t 的初始位置,然后每次判断 s 与 t 是否相等,如果相等则两个追踪指针同时移动到下一个位置继续判断。
由于 “子序列” 的判定是允许中间 “删除一些字符”,因此每当 s 与 t 不相等的时候,k 指针移动到下一位,继续尝试匹配。
最终如果 j 等于字符串 s 的长度,也就说明了 s 整个字符串成功地被遍历了一遍,即证明 s 是 t 的子序列。
页:
[1]