跟着NOAI考纲学Python,学完就能考,第7课
每天一个知识点,带你自学NOAI,加入我们吧~
前面学的变量,一个变量只能存一个值。但如果有全班30个同学的成绩呢?总不能写30个变量吧。这节课学列表——用一个变量存一堆数据。
创建列表
列表用方括号 [] 创建,元素之间用逗号隔开:
scores = [90, 85, 78, 92, 60] |
[90, 85, 78, 92, 60]
列表里可以放任何类型的数据:
names = ["小明", "小红", "小刚"] # 字符串列表 |
用索引取出元素
列表里的每个元素都有一个编号,叫索引。索引从0开始,不是从1开始。
fruits = ["苹果", "香蕉", "橘子", "西瓜"] |
苹果
橘子
对应关系:
| 索引 | 0 | 1 | 2 | 3 |
| 元素 | "苹果" | "香蕉" | "橘子" | "西瓜" |
Python还支持负数索引,从末尾倒着数:
print(fruits[-1]) # 最后一个 |
西瓜
橘子
-1就是最后一个,-2就是倒数第二个。当你想取最后一个元素又不想数有多少个的时候,[-1]特别方便。
修改列表
修改某个元素
通过索引直接赋值:
scores = [90, 85, 78] |
[90, 95, 78]
添加元素:append()
append()在列表末尾加一个元素:
scores = [90, 85, 78] |
[90, 85, 78, 100]
注意写法:scores.append(100),用点号连接列表名和append。这种写法叫"方法调用",后面会详细学。
获取列表长度:len()
scores = [90, 85, 78] |
3
len()返回列表里有多少个元素。3个元素,索引就是0、1、2。
用for循环遍历列表
上节课说过,for可以遍历字符串。for也能遍历列表——一个一个地取出元素:
names = ["小明", "小红", "小刚"] |
你好, 小明
你好, 小红
你好, 小刚
变量name每一轮取到列表里的一个元素,按顺序从头到尾。这就是列表和循环配合的威力——不管列表里有3个还是3000个元素,代码都一样。
实战:求列表的平均分
把前面学的循环和列表结合:算全班的平均分。
scores = [90, 85, 78, 92, 60] |
平均分: 81.0
拆开看:
• 用for循环把所有分数加到total里
• 用 len(scores) 获取人数
• 总分除以人数得到平均分
新手最容易犯的两个错
错误1以为索引从1开始
fruits = ["苹果", "香蕉", "橘子"] |
记住:列表索引从0开始。第一个元素是[0],第二个是[1]。这和range从0开始是一个道理。
错误2索引越界
fruits = ["苹果", "香蕉", "橘子"] |
3个元素的列表,索引只能是0、1、2(或者-1、-2、-3)。用了不存在的索引就会报 IndexError。想取最后一个元素,用[-1]最安全。
动手试试
|
练习1:预测输出 下面这段代码,输出什么?
提示:nums[2]是哪个元素?append加在哪里? |
|
练习2:找bug 这段代码想打印列表中的每个元素,但报错了。哪里出了问题?
提示:i会取到1、2、3。colors[3]存在吗?而且colors[0]被跳过了。 |
|
练习3:写代码 写一个程序:有一个成绩列表 scores = [88, 92, 75, 60, 95, 83],用for循环找出其中的最高分和最低分,分别打印出来。 提示:先假设第一个元素是最高/最低,然后遍历列表,遇到更大的就更新最高分,遇到更小的就更新最低分。 |
自己先想,想完了去香农平台上写代码跑一遍验证。
去平台上手写代码
有了列表,你的程序可以处理批量数据了。回顾一下:
• 列表 = [元素1, 元素2, ...] — 用方括号创建
• 列表[索引] — 取出或修改元素,索引从0开始
• append() / len() — 添加元素 / 获取长度
• for x in 列表: — 遍历列表里的每个元素
这篇文章讲的是香农NOAI学习平台"Python基础"模块的第七课。平台上有更多的练习题,写完代码点运行,对不对立刻就知道。
香农NOAI学习平台
地址:shannon.arpa.school
微信扫码登录就能用,免费。
找到「Python基础」→「列表」,从第一道题开始写。
下一篇讲函数——把一段经常用的代码打包起来,取个名字,以后一句话就能调用。