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

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

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

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

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

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

创建列表

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

scores = [9085789260]
print(scores)

[90, 85, 78, 92, 60]

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

names = ["小明""小红""小刚"]     # 字符串列表
mixed = [1"hello"True3.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 = [908578]
scores[1] = 95     # 把第二个元素从85改成95
print(scores)

[90, 95, 78]

添加元素:append()

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

scores = [908578]
scores.append(100)
print(scores)

[90, 85, 78, 100]

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

获取列表长度:len()

scores = [908578]
print(len(scores))

3

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

用for循环遍历列表

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

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

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

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

实战:求列表的平均分

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

scores = [9085789260]
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 = [10203040]
nums[2] = 99
nums.append(50)
print(nums)
print(len(nums))

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

练习2:找bug

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

colors = ["红""绿""蓝"]
for i in range(14):
    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】加交流群