跟着NOAI考纲学Python,学完就能考,第7课

跟着NOAI考纲学Python,学完就能考,第7课

本文核心观点
NOAI 自学 Python 系列第 7 课:列表创建、索引/切片、append/pop/sort 等常用方法、二维列表与列表推导式。

跟着NOAI考纲学Python,学完就能考,第7课

每天一个知识点,带你自学NOAI,加入我们吧~

前面学的变量,一个变量只能存一个值。但如果有全班30个同学的成绩呢?总不能写30个变量吧。这节课学列表——用一个变量存一堆数据。

创建列表

列表用方括号 [] 创建,元素之间用逗号隔开:

scores = [90, 85, 78, 92, 60]
print(scores)

[90, 85, 78, 92, 60]

列表里可以放任何类型的数据:

names = ["小明", "小红", "小刚"]     # 字符串列表
mixed = [1, "hello", True, 3.14]   # 混合类型也行
empty = []                             # 空列表

用索引取出元素

列表里的每个元素都有一个编号,叫索引。索引从0开始,不是从1开始。

fruits = ["苹果", "香蕉", "橘子", "西瓜"]
print(fruits[0])
print(fruits[2])

苹果
橘子

对应关系:

索引 0 1 2 3
元素 "苹果" "香蕉" "橘子" "西瓜"

Python还支持负数索引,从末尾倒着数:

print(fruits[-1])    # 最后一个
print(fruits[-2])    # 倒数第二个

西瓜
橘子

-1就是最后一个,-2就是倒数第二个。当你想取最后一个元素又不想数有多少个的时候,[-1]特别方便。

修改列表

修改某个元素

通过索引直接赋值:

scores = [90, 85, 78]
scores[1] = 95     # 把第二个元素从85改成95
print(scores)

[90, 95, 78]

添加元素:append()

append()在列表末尾加一个元素:

scores = [90, 85, 78]
scores.append(100)
print(scores)

[90, 85, 78, 100]

注意写法:scores.append(100),用点号连接列表名和append。这种写法叫"方法调用",后面会详细学。

获取列表长度:len()

scores = [90, 85, 78]
print(len(scores))

3

len()返回列表里有多少个元素。3个元素,索引就是0、1、2。

用for循环遍历列表

上节课说过,for可以遍历字符串。for也能遍历列表——一个一个地取出元素:

names = ["小明", "小红", "小刚"]
for name in names:
    print("你好,", name)

你好, 小明
你好, 小红
你好, 小刚

变量name每一轮取到列表里的一个元素,按顺序从头到尾。这就是列表和循环配合的威力——不管列表里有3个还是3000个元素,代码都一样。

实战:求列表的平均分

把前面学的循环和列表结合:算全班的平均分。

scores = [90, 85, 78, 92, 60]
total = 0
for s in scores:
    total += s
avg = total / len(scores)
print("平均分:", avg)

平均分: 81.0

拆开看:

• 用for循环把所有分数加到total里

• 用 len(scores) 获取人数

• 总分除以人数得到平均分

新手最容易犯的两个错

错误1以为索引从1开始

fruits = ["苹果", "香蕉", "橘子"]
print(fruits[1])    # 想取"苹果"?拿到的是"香蕉"!
print(fruits[0])    # 第一个元素的索引是0

记住:列表索引从0开始。第一个元素是[0],第二个是[1]。这和range从0开始是一个道理。

错误2索引越界

fruits = ["苹果", "香蕉", "橘子"]
print(fruits[3])    # 报错!只有0,1,2,没有3

3个元素的列表,索引只能是0、1、2(或者-1、-2、-3)。用了不存在的索引就会报 IndexError。想取最后一个元素,用[-1]最安全。

动手试试

练习1:预测输出

下面这段代码,输出什么?

nums = [10, 20, 30, 40]
nums[2] = 99
nums.append(50)
print(nums)
print(len(nums))

提示:nums[2]是哪个元素?append加在哪里?

练习2:找bug

这段代码想打印列表中的每个元素,但报错了。哪里出了问题?

colors = ["红", "绿", "蓝"]
for i in range(1, 4):
    print(colors[i])

提示: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基础」→「列表」,从第一道题开始写。

下一篇讲函数——把一段经常用的代码打包起来,取个名字,以后一句话就能调用。

微信二维码

扫码备注【NOAI】加交流群