CAICP-E · Python 编程基础
排队、切片、改句子
列表排序和切片,字符串分割、替换、格式化。
这一节要学会什么
#what乱成绩和一句错话
#hook一组成绩乱糟糟。老师要按从低到高排。 有时只要前三名那一段。像切蛋糕,只要中间几块。
黑板上还有一句口号写错了。要把逗号名单切开。 把错字换成对的。再把名字填进句子。
列表管排队和切片。字符串管改句子。 两样都做完,这一课才完整。

如果觉得有点难 切片先记一句:从左边这个开始,到右边那个前面停下。 改句子时,每学一个方法,打印前后对比。
如果已经会了 排好序后取出最高的两个。 再把一句介绍写成 f 字符串:姓名加年龄。 切片有人叫「左闭右开」,意思就是上面那句。
.format也能填空,和 f 字符串结果一样。
sort 改原来,sorted 另给一份
#explore-sort从小到大排,用 sort。
nums = [3, 1, 2]
nums.sort()
print(nums)变成 [1, 2, 3]。sort 会改原来的列表。
原来那一排被重新站过。
从大到小:
nums = [3, 1, 2]
nums.sort(reverse=True)
print(nums)变成 [3, 2, 1]。
不想改原来的,用 sorted。它会给出新列表。
nums = [3, 1, 2]
new_nums = sorted(nums)
print(nums)
print(new_nums)nums 还是 [3, 1, 2]。new_nums 是 [1, 2, 3]。

名字也能排。按字典顺序。
names = ["安安", "晨晨", "派派"]
print(sorted(names))会按第一个字的顺序站好。得到 ['安安', '晨晨', '派派']。
口诀可以记:
sort 动手改。sorted 另给一份。
切片:像切一块蛋糕
#explore-slice切片用冒号。写法是 列表[开始:结束]。
从左边这个开始,到右边那个前面停下。
letters = ["a", "b", "c", "d", "e"]
print(letters[1:4])得到 ['b', 'c', 'd']。从下标 1 取到下标 3。
下标 4 那块不上盘。

省略开始,表示从最左边。
print(letters[:3])['a', 'b', 'c']。前三个。
省略结束,表示一直到最右边。
print(letters[2:])['c', 'd', 'e']。
成绩单可以先排,再切:
scores = [70, 95, 88, 82]
high = sorted(scores, reverse=True)
print(high[:2])先从高到低。再切出最高的两个。
得到 [95, 88]。
切片常常得到新列表。原来的列表还在。
单个下标取出一个。切片取出一排。 两个不要混。
print(letters[1])
print(letters[1:2])一个是 'b'。一个是 ['b']。
样子不同。
隔一个取一个
#explore-skip步长也可以写。第三个数表示每次跳几格。
letters = ["a", "b", "c", "d", "e"]
print(letters[::2])隔一个取一个。得到 ['a', 'c', 'e']。

从下标 1 开始,隔一个取:
print(letters[1::2])得到 ['b', 'd']。
点名时隔一个喊一个,就是这个意思。会认就行。 切蛋糕那一句更常用。
走完整张成绩单,还是用 for:
for s in scores:
print(s)
先读一遍,再排序,再切一段。三步可以连着做。
split:沿逗号剪开
#explore-split名单有时写在一句里。中间用逗号隔开。
split 会按分隔符切开。结果是列表。
text = "苹果,香蕉,梨"
parts = text.split(",")
print(parts)得到 ['苹果', '香蕉', '梨']。

不写分隔符时,按空白切。
print("a b c".split())得到 ['a', 'b', 'c']。
切完就变成列表。可以按下标取,也可以 for 走一遍。
还记得 + 能把两段文字接起来。那是粘。
split 是剪。一来一回。
replace:换字,旧句子还在
#explore-replacereplace 会把旧字换成新字。
line = "我喜欢猫"
print(line.replace("猫", "狗"))
print(line)第一行打印:我喜欢狗 第二行还是:我喜欢猫
因为 replace 常常得到新字符串。旧的 line 没被改掉。

想留下新的,要赋值。
line = line.replace("猫", "狗")
print(line)这回才是:我喜欢狗。
口号写错一个字,就这样改。改完记得接住新句子。
把名字填进句子,再逐字走
#explore-format把变量填进句子,叫格式化。一种清楚的写法是 f 字符串。
字母 f 写在引号前面。
name = "小红"
age = 11
print(f"{name}今年{age}岁")得到:小红今年11岁 大括号里放变量名。

用 f 字符串就够了。
字符串可以当一排字符来走。
for ch in "Python":
print(ch)会一字母一行。空格、标点也是字符。
还可以用下标。和列表很像,从 0 开始。
word = "hello"
print(word[0])
print(word[1:4])h 和 ell。
把改句子串起来,可以是这样:
raw = "苹果,香蕉,梨"
fruits = raw.split(",")
msg = "我喜欢猫"
msg = msg.replace("猫", fruits[0])
print(f"{msg}。今天买了{len(fruits)}样。")先切开,再换字,再填空。一句口号就修好了。

这节课我学会了
#review记住这些:
sort会改原来的列表,sorted会得到新列表。- 切片从左边这个开始,到右边那个前面停下。
[:n]前 n 个,[n:]从 n 到末尾。 split切成列表。replace换字,想留下就要赋值。- f 字符串可以把变量填进句子。
for ch in s遍历每个字符。
成绩单:先读,再排,再切。口号:先剪,再换,再填。
下一课才把做法装成工具。也才会用现成的帮手做统计。
试一试
#evaluate看完就来检查一下。选错了也可以再想。
单选题
切片结果
a = [0, 1, 2, 3, 4]。a[1:3] 是?
单选题
sort 会怎样
nums = [2, 1]。执行 nums.sort() 后,nums 是?
单选题
替换后原来呢
s = 「猫」。执行 s.replace(「猫」, 「狗」) 但没有赋值。s 通常是?
多选题
排队和改句子
下列说法正确的有哪些?可以多选。
可多选
未登录时不会保存学习进度