列表是什么?
列表是由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字 0-9 或所有家庭成员姓名的列表,也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。
一句话:一排有序的小盒子,用 [] 包起来,盒子间用逗号隔开。
fruits = ["苹果", "香蕉", "橙子", "葡萄"]

索引从0而不是从1开始
在 Python 中,第一个列表元素的索引为 0 ,而不是 1 ,在大多数编程语言中都是如此。这与列表操作的底层实现相关。如果结果不对,请看看你是否犯了简单的错误。
fruits[0] # 苹果(第1个)
fruits[2] # 橙子(第3个)
fruits[-1] # 葡萄(倒数第1个,-1 是最后一个)

切片:一次切一段
fruits[0:2] # ['苹果','香蕉'] —— 含起点0,不含终点2
fruits[1:] # 省略终点 = 一直切到末尾

修改、添加和删除元素
创建的大多数列表都是动态的,这意味着列表创建后将随着程序的运行增删元素。 例如:创建一个游戏,要求玩家射杀从天而降的外星人。可在开始时将一些外星人存储在列表中: 1. 每当有外星人被射杀时,都将其从列表中删除; 2. 每次有新的外星人出现在屏幕上时,都将其添加到列表中。 在整个游戏运行期间,外星人列表的长度将不断变化。
| 操作 | 代码 | 说明 |
|---|---|---|
| 改 | fruits[1] = "芒果" |
直接给某个位置赋值 |
| 加 | fruits.append("西瓜") |
加到末尾 |
| 删 | fruits.remove("橙子") |
按"内容"删 |
改(最简单)
直接给某个位置赋值就行:
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
print(fruits)
fruits[0] = "芒果" # 下标0换成芒果
print(fruits)

还有一种是切片改,妙处是:左右数量可以不相等,比如 [0:1] = ["a","b","c"] 能让一个位置"裂"成三个。
妙处:左右数量可以不相等,比如 [0:1] = ["a","b","c"] 能让一个位置"裂"成三个。
fruits[0:2] = ["西瓜","草莓"] # 切片改:把前两个整体替换成这两个

加(3种,记清区别)
第一种命令是:fruits.append("菠萝")

第二种命令是:fruits.insert(1,"菠萝"),#这里的1代表在1处插入,原1处往后移。

第三种命令是:extend([...])

删(4 种,按"值"还是按"位置"分)
remove(值) |
按内容删第一个匹配的 | 无 | ✅ |
pop(下标) |
按位置删 | 返回被删的元素 | ✅ |
del 列表[下标] |
按位置删 | 无 | ✅ |
clear() |
清空全部 | 无(列表变空 []) |
✅ |
一:按「值」删(你只知道它叫什么)
remove(值) —— 凭名字删第一个匹配的。
fruits.remove("橙子") # 把叫"橙子"的那个删掉,不关心它在第几位

按「位置」删(你知道第几个)
pop(下标) —— 删指定位置,并把删掉的东西还给你。
popped = pruits.pop(2) # 删下标2,popped 就是被删的"橙子"
last = pruits.pop() # 不写下标 → 默认删最后一个


三:del 列表[下标] —— 删指定位置,无返回值,但能删「一整段」
del lst[0] # 删下标0
del lst[1:3] # 删下标1到2这一片("香蕉""橙子"一起没)


四:一次性清空
clear() —— 全删,列表变 []
fruits.clear() # 变成空列表

组织列表
组织列表"不是 Python 里的官方术语,是把这一类操作归到一块儿、起的一个通俗说法。一句话理解:增/删/改是你"亲手挑一个元素"去动手(往里塞、拿出来、换个值),组织列表是你让列表整体自己整理,或者去"打听"列表的信息。
打个比方:前面是把抽屉里某一件东西拿出来/放进去;现在是把整个抽屉理一理——按大小排好、数数有几件、找某件在哪一格。
1. 排序:sort() 原地改 vs sorted() 返回新列表
这是最容易混的一对,记住一句话:
sort():直接把原列表改了(原地排序),不返回新列表sorted():不动原列表,而是返回一个排好序的新列表


2. 反转:reverse()

3. 长度:len(列表) 最常用,记牢
