科创科普:程序里的「大收纳架」——Python 的列表与字典

科创科普:程序里的「大收纳架」——Python 的列表与字典

一、变量只能装一个,列表能装一排

学 Python 的第一课是变量:score = 95。可如果班里有40个人,写40个变量名显然不现实。列表(list)就是为了解决"一堆同类数据"而生的:用一对方括号把数据装进去,用逗号隔开,例如 scores = [95, 88, 76, 100, 62]。列表里可以放数字、文字、甚至再放一个列表,同一份数据用名字就能整批管理。

二、列表的增删改查:四个动作撑起大半功能

查:用下标取值,下标从0开始。scores[0] 是第一项,scores[-1] 是最后一项。取超出范围的下标会报 IndexError,这也是初学者最常见的报错之一。 改:直接给下标赋值,scores[0] = 99 就把第一项改掉了。 增:用 append 往末尾加一项,用 insert 往指定位置插入,用 extend 把另一个列表整批接上去。 删:用 pop 拿走最后一项(或指定下标),用 remove 按值删除,用 clear 清空整个列表。

配套还有三个特别常用的函数:len(scores) 求个数、sum(scores) 求和、max/min 求最大最小值。三者一组合,平均分就是 sum(scores)/len(scores)。

三、切片与遍历:一次处理一批数据

切片用来"截取一段":scores[1:4] 取出下标1、2、3这三项,注意"含头不含尾"。scores[:3] 是前三项,scores[-3:] 是最后三项,scores[::2] 是每隔一个取一个。切片不会改动原列表,它返回的是新列表。

遍历是把"每个都处理一遍":用 for s in scores: 就能依次拿到每一项。如果必须知道下标,用 enumerate(scores) 可以同时拿到序号和值。注意:遍历列表时不要一边遍历一边删除元素,很容易漏项——这是很多"程序结果少算了一个人"的真实原因。要删就先收集要删的对象,遍历结束再统一删。

四、字典:给每个数据贴一张名牌

列表按"位置"找数据,字典(dict)按"名字"找数据。写法是用一对花括号,每项是"键: 值",例如 stu = {"name": "小明", "score": 95, "class": 3}。取值用 stu["name"],新增或修改用 stu["score"] = 98,删除用 del stu["score"]。用 get 取值更安全:stu.get("height", 0) 在没有这个键时返回默认值0,不会直接报错。

字典适合表达"一个对象的多个属性",也适合做"统计表"。例如统计一句话里每个字出现的次数,可以用一个字作键、次数作值,循环里用 d[ch] = d.get(ch, 0) + 1 一句就能累加。

五、把两者组合起来:列表装字典

真实项目里最常见的数据形状是"列表里放字典":一个班的学生名单就是一个列表,每个学生是一个字典。要打印所有人的成绩,就写两层循环——外层遍历列表拿到每个字典,内层用它自己的键取值。

案例:做一份班级成绩单

需求:输入5位同学的成绩,算出平均分,并打印"高于平均分"的同学名字。思路分三步:第一步,用列表存名字、用列表存成绩(下标一一对应,或者改成"列表装字典"更清晰);第二步,用 sum 和 len 求平均,注意别用整数除法写成 //,否则小数会被丢掉;第三步,遍历找出高于平均分的项并打印,同时统计人数。做完再用一组假数据自测:如果算出来的平均分和手算不一致,优先怀疑数据类型和边界情况,而不是怀疑 Python 算错了。

练习

  1. 写一段代码:建一个含5个整数的列表,输出它的总和、最大值、最小值、平均值(保留两位小数)。
  2. 已知 nums = [3, 8, 5, 12, 7],写出 nums[1:4] 和 nums[-2:] 的结果。
  3. 用字典存一位同学的姓名、班级、三门功课成绩,并算出三科总分,写出完整代码。