Python列表的创建与使用
中等0列表:你的“超级购物车”,装得下所有数据
同学们,你们去超市时,是不是都会推一辆购物车?看到好吃的零食、好玩的玩具,就放进车里,结账时再一件件拿出来。Python里的列表就像这辆购物车——它能装下很多个数据,而且你可以随时往里面放新东西、拿走不想要的,或者把里面的东西换掉。学会了列表,你就有了一个能灵活管理多份数据的工具箱。
1. 创建列表:把东西放进购物车
创建一个列表非常简单:用方括号 [] 把数据包起来,数据之间用逗号隔开。比如,你想记录自己今天要买的零食:
snacks = ["薯片", "巧克力", "果汁"] # 三个字符串元素
print(snacks) # 输出:['薯片', '巧克力', '果汁']
列表里的每一份数据都叫元素。元素可以是任何类型:数字、文字、小数、真假值……甚至可以把不同类型混在一起(不过通常最好放同一类东西,这样用起来更方便)。
mix = ["苹果", 3, 5.5, True] # 字符串、整数、小数、布尔值混在一起
你也可以先创建一个空列表,之后慢慢往里加东西:
shopping_cart = [] # 空的购物车
2. 访问列表中的元素:按号叫人
列表里的元素排着队,每个都有自己的位置编号——这个编号叫作索引。注意:Python 是从0开始数的!也就是说,第一个元素是0号,第二个是1号,第三个是2号……
举个例子,你有一张考试成绩列表:
scores = [88, 95, 73, 100, 67] # 五位同学的数学成绩
print(scores[0]) # 输出:88 (第一位同学)
print(scores[2]) # 输出:73 (第三位同学)
print(scores[4]) # 输出:67 (第五位同学)
Python 还允许你用负数索引,从列表末尾往前数:-1 是最后一个,-2 是倒数第二个。这就像从队尾开始数人。
print(scores[-1]) # 输出:67 (最后一个)
print(scores[-2]) # 输出:100 (倒数第二个)
? 常见错误:索引越界
如果你喊了一个不存在的号码,比如列表只有5个元素,你却要取 scores[5](第6个),程序就会生气地报错:
IndexError: list index out of range
这就像你在排队,喊“第6位同学”,但队伍里只有5个人,自然没有人回应。所以使用索引时,一定要确保它在 0 到 len(列表)-1 之间。想知道列表的长度,可以用 len() 函数:
print(len(scores)) # 输出:5
3. 修改、添加和删除元素:随时调整购物车
列表是“可变”的,也就是说创建之后你还可以随意改动里面的内容。
修改:给指定位置放一个新东西
直接通过索引赋值,就像把购物车里某个位置的东西换成别的。
fruits = ["苹果", "香蕉", "橙子"]
fruits[1] = "西瓜" # 把第二个(索引1)的香蕉换成西瓜
print(fruits) # 输出:['苹果', '西瓜', '橙子']
添加:在末尾或指定位置加东西
-
append(新元素):在列表末尾添加一个元素,就像把东西放到购物车最上面。fruits.append("葡萄") print(fruits) # 输出:['苹果', '西瓜', '橙子', '葡萄'] -
insert(索引, 新元素):在指定位置插入一个元素,其他元素自动往后挪。比如你想把“草莓”插在第一个位置:fruits.insert(0, "草莓") print(fruits) # 输出:['草莓', '苹果', '西瓜', '橙子', '葡萄']
删除:拿走不想要的东西
-
pop(索引):移除指定位置的元素,并返回这个元素。如果不写索引,默认移除最后一个。fruits = ["苹果", "西瓜", "橙子", "葡萄"] last = fruits.pop() # 移除最后一个(葡萄),并保存到变量 last 中 print(last) # 输出:葡萄 print(fruits) # 输出:['苹果', '西瓜', '橙子'] second = fruits.pop(1) # 移除索引1(西瓜) print(second) # 输出:西瓜 print(fruits) # 输出:['苹果', '橙子'] -
remove(值):直接删除第一个匹配的值(不是索引)。如果列表里有重复值,只会删除第一个出现的。animals = ["猫", "狗", "狗", "兔子"] animals.remove("狗") # 删除第一个"狗" print(animals) # 输出:['猫', '狗', '兔子'] -
clear():清空列表,变成空列表。相当于把购物车里的东西全倒出来。animals.clear() print(animals) # 输出:[]
更多常用操作
-
判断元素是否存在:用
in关键字,就像问“这件东西在不在购物车里?”bag = ["铅笔", "橡皮", "尺子"] print("橡皮" in bag) # 输出:True print("钢笔" in bag) # 输出:False -
列表的拼接:用
+可以把两个列表连起来,变成一个大列表。math_scores = [90, 85, 78] english_scores = [88, 92, 76] all_scores = math_scores + english_scores print(all_scores) # 输出:[90, 85, 78, 88, 92, 76] -
复制列表:直接用
=赋值其实是“共用同一个购物车”,如果修改其中一个,另一个也会变。要是想单独复制一份,可以用copy()或切片[:]。original = [1, 2, 3] copy1 = original.copy() copy2 = original[:] # 切片也表示复制一份
4. 遍历列表:把购物车里的东西都看一遍
很多时候你需要依次处理列表里的每个元素,比如把每个同学的成绩打印出来。用 for 循环可以轻松搞定:
scores = [88, 95, 73, 100, 67]
for s in scores: # s 依次取列表中的每个元素
print("分数:", s)
如果你想同时知道元素的值和它的索引,可以用 enumerate():
friends = ["小明", "小红", "小刚"]
for i, name in enumerate(friends):
print("第", i, "位是:", name)
# 输出:
# 第 0 位是: 小明
# 第 1 位是: 小红
# 第 2 位是: 小刚
5. 完整示例:模拟一个简单的购物车程序
让我们把今天学到的知识用起来,写一个可以添加、查看、删除商品的小程序。注意每行代码都加了中文注释,方便你理解。
# 1. 创建一个空购物车列表
cart = []
# 2. 添加几样商品
cart.append("牛奶") # 用 append 添加
cart.append("面包")
cart.append("鸡蛋")
cart.insert(1, "苹果") # 在第二个位置插入苹果
print("当前购物车:", cart) # 输出:['牛奶', '苹果', '面包', '鸡蛋']
# 3. 修改商品:把'面包'改成'蛋糕'
index_bread = cart.index("面包") # 先找到'面包'的索引
cart[index_bread] = "蛋糕"
print("修改后:", cart) # 输出:['牛奶', '苹果', '蛋糕', '鸡蛋']
# 4. 删除商品:移除最后一个,再移除'牛奶'
last_item = cart.pop() # 移除并返回最后一个(鸡蛋)
print("移除了:", last_item) # 输出:移除了: 鸡蛋
cart.remove("牛奶") # 直接删除值“牛奶”
print("删除后:", cart) # 输出:['苹果', '蛋糕']
# 5. 遍历并打印剩余商品
print("购物车还剩:")
for item in cart:
print(" -", item)
# 输出:
# 购物车还剩:
# - 苹果
# - 蛋糕
# 6. 清空购物车
cart.clear()
print("清空后:", cart) # 输出:[]
6. 新手容易犯的错误(重点看这里)
-
索引从0开始,不是1
list[1]是第二个元素,不是第一个。很多同学会搞混,写list[1]想取第一个,结果取到了第二个。 -
索引越界
列表长度为n,有效索引是0到n-1。访问list[n]会报错。先用len()看看长度。 -
使用
append时漏了括号
list.append 值这样写会报错,正确写法是list.append(值)。 -
remove只删第一个匹配的值
如果列表里有多个相同的值,remove只删除最先出现的那一个。想全部删除需要循环。 -
直接赋值给另一个变量时,二者共享同一个列表
a = [1, 2, 3] b = a # b 和 a 指向同一个列表 b.append(4) print(a) # 输出:[1, 2, 3, 4] (a 也被改了!)如果你想要一份独立的副本,用
a.copy()或a[:]。
7. 小练习(巩固一下)
来试试看:创建一个列表 numbers = [10, 20, 30],然后:
- 把第二个数(20)改成25
- 在末尾加上40
- 删除第一个数(10)
- 最后打印整个列表,看看是不是变成了
[25, 30, 40]?
参考代码(先自己试试,再来看答案哦):
numbers = [10, 20, 30] # 初始列表
numbers[1] = 25 # 修改索引1
numbers.append(40) # 末尾添加
numbers.pop(0) # 删除索引0(即第一个数)
print(numbers) # 输出:[25, 30, 40]
8. 接下来学什么?
学会了列表,你已经能轻松管理多份数据了。下一步,你可以学习:
- 字符串:其实字符串也是一种“类似列表”的东西,可以用索引访问单个字符,也可以用
len()和切片。 - 元组:像列表但不可修改,适合存放固定不变的数据。
- 字典:用“名字”来查找数据,比如用同学的名字找他的成绩。
- 列表推导式:一行代码快速生成列表的魔法。
列表是Python中最常用、最灵活的数据容器,多多练习,你就能玩转它啦!
例题精讲
已知列表 lst = [10, 20, 30, 40],执行 lst[1] = 50 后,列表 lst 的内容是什么?
使用 len() 函数可以获取列表的长度,例如 len([1, 2, 3]) 的结果是 3。
补全代码,创建一个包含1、2、3三个整数的列表,然后使用 append 方法添加数字4,最后打印列表,输出应为 [1, 2, 3, 4]。
lst = [1, 2, 3]
lst.___
print(lst)对于列表 lst = ['a', 'b', 'c', 'd', 'e'],以下切片操作 lst[1:4] 的结果是什么?
补全代码,先创建一个空列表 lst,然后使用 for 循环将 0 到 4 这 5 个整数依次添加到列表中,最后输出 lst 应为 [0, 1, 2, 3, 4]。
lst = []
for i in range(5):
lst.___
print(lst)