列表查询、排序
与任务管理器
第七天,我继续学习列表。列表不只能保存内容,还可以查询、插入、排序和统计,让一组数据真正参与程序的判断与处理。
使用 in 查询列表
if search in subjects 会判断输入的内容是否存在于列表中。输入“Python”时能够找到,输入尚未加入列表的“物理”时则找不到。
day7.py
subjects = ["语文", "数学", "英语", "Python"]
search = input("请输入要查找的科目:")
if search in subjects:
print("找到了")
else:
print("没找到")
if ... in ... 用来判断某项内容是否存在;for ... in ... 则是依次取出列表中的每一项。相同的 in 要结合整句话理解。
在指定位置插入内容
append() 把内容放在末尾,而 insert(位置, 内容) 可以指定插入位置。原位置及后面的内容会依次向后移动。
day7.py
subjects.insert(1, "物理")
print(subjects)
search = input("请输入要查找的科目:")
if search in subjects:
print("找到了")
把插入操作放到查询之前,输入“物理”才能找到。这个调整让我看到:每一行单独写对还不够,代码的执行顺序同样会改变结果。
使用 sort() 排序
sort() 会直接改变原来的列表。默认从小到大排列,加入 reverse=True 后则从大到小排列。
day7.py
scores = [88, 72, 95, 60, 83]
scores.sort()
print("从小到大:", scores)
scores.sort(reverse=True)
print("从大到小:", scores)
程序先输出 [60, 72, 83, 88, 95],再输出 [95, 88, 83, 72, 60]。中文排序依据字符编码,目前不必把它理解为拼音排序。
使用 count() 统计次数
count() 会返回某个内容在列表中出现了多少次。如果完全没有出现,结果是 0,而不是报错。
day7.py
practice_records = [
"Python", "数学", "Python",
"英语", "Python"
]
python_count = practice_records.count("Python")
print("Python 出现了", python_count, "次")
列表中有三个“Python”,所以程序正确输出了 3。
学习任务管理器
最后,我把查询、统计、添加、排序、遍历和长度统计组合起来:已有任务显示出现次数,新任务则自动加入清单。
task_manager.py
tasks = [
"背单词", "复习数学",
"练习Python", "背单词"
]
search = input("请输入要查找的任务:")
if search in tasks:
task_count = tasks.count(search)
print("找到,这项任务出现了", task_count, "次")
else:
tasks.append(search)
print("没找到,已加入任务清单")
tasks.sort()
for task in tasks:
print("-", task)
print("一共有", len(tasks), "项任务")
查询“背单词”时,程序统计出它出现 2 次;重新运行并查询“整理错题”时,程序将其加入清单,总数变成 5。
程序每次重新运行都会从代码中的初始列表开始。要让新增任务永久保存,需要以后学习文件读写。
今天真正弄懂了什么
in可以判断内容是否存在于列表中insert()可以在指定位置添加内容- 代码执行顺序会影响查询结果
sort()会直接修改列表的排列顺序reverse=True可以开启反向排序count()可以统计内容出现次数- 查询、判断和列表操作可以组合成实用的小程序
今天不只是继续记忆列表方法,而是第一次根据“找到”或“没找到”的不同情况,让程序主动选择统计或添加操作。