什么是列表?¶
在Python中,列表(List)是一种有序且可变的数据容器,就像一个可以装各种东西的“篮子”。你可以往里面放数字、字符串、甚至其他列表,而且可以随时修改、添加或删除里面的元素。列表用中括号 [] 表示,元素之间用逗号 , 分隔。
一、创建列表¶
创建列表非常简单,直接用中括号 [] 包裹元素即可。元素可以是不同类型(数字、字符串、布尔值等),甚至是空列表。
示例1:基本列表
# 数字列表
numbers = [1, 2, 3, 4, 5]
# 字符串列表
fruits = ["apple", "banana", "cherry"]
# 混合类型列表(支持不同类型元素)
mixed = [10, "hello", True, 3.14]
# 空列表(初始时没有元素)
empty_list = []
二、索引:访问列表元素¶
列表中的元素是有序排列的,我们可以通过“索引”(类似门牌号)访问单个元素。Python的索引从 0 开始(不是1!),最后一个元素的索引是 -1(倒数第一个),-2 是倒数第二个,以此类推。
示例2:索引基础
fruits = ["apple", "banana", "cherry", "date"]
# 访问第一个元素(索引0)
print(fruits[0]) # 输出:apple
# 访问最后一个元素(索引-1)
print(fruits[-1]) # 输出:date
# 访问倒数第二个元素(索引-2)
print(fruits[-2]) # 输出:cherry
注意:如果索引超出范围(比如列表只有4个元素,却访问 fruits[4]),会报错 IndexError。
三、切片:获取列表的一部分¶
切片(Slice)用于从列表中获取连续的多个元素,语法是 列表[起始索引:结束索引:步长]。
- 起始索引:包含该位置的元素(默认为0);
- 结束索引:不包含该位置的元素(默认为列表长度);
- 步长:每次移动的步数(默认为1,步长为负数时反向取元素)。
示例3:切片基础
numbers = [0, 1, 2, 3, 4, 5, 6]
# 从索引1到3(不包含3)的元素
print(numbers[1:4]) # 输出:[1, 2, 3]
# 从开头到索引5(不包含5),步长为2(隔一个取一个)
print(numbers[:5:2]) # 输出:[0, 2, 4]
# 反向切片(步长为-1)
print(numbers[::-1]) # 输出:[6, 5, 4, 3, 2, 1, 0]
# 复制整个列表(等同于创建新列表)
copied = numbers[:]
print(copied) # 输出:[0, 1, 2, 3, 4, 5, 6]
四、列表的常用操作¶
列表的灵活之处在于可以对其进行增、删、改、查等操作,以下是最常用的方法:
1. 添加元素¶
append():在列表末尾添加一个元素;insert():在列表指定位置插入一个元素。
示例4:添加元素
fruits = ["apple", "banana"]
# 在末尾添加元素
fruits.append("cherry")
print(fruits) # 输出:["apple", "banana", "cherry"]
# 在索引1的位置插入元素
fruits.insert(1, "orange")
print(fruits) # 输出:["apple", "orange", "banana", "cherry"]
2. 删除元素¶
remove():根据值删除第一个匹配的元素(无匹配值会报错);pop():根据索引删除元素(默认删除最后一个,返回被删除元素);del:删除指定位置的元素或整个列表。
示例5:删除元素
fruits = ["apple", "banana", "cherry", "banana"]
# 根据值删除第一个"banana"
fruits.remove("banana")
print(fruits) # 输出:["apple", "cherry", "banana"]
# 根据索引删除(删除索引0的元素)
removed = fruits.pop(0)
print(removed) # 输出:apple
print(fruits) # 输出:["cherry", "banana"]
# 删除整个列表(del会直接清空列表)
del fruits[0]
print(fruits) # 输出:["banana"]
3. 修改元素¶
直接通过索引赋值修改指定位置的元素。
示例6:修改元素
numbers = [1, 2, 3]
numbers[1] = 100 # 修改索引1的元素为100
print(numbers) # 输出:[1, 100, 3]
4. 列表长度与检查元素¶
len():获取列表元素的个数;in:检查某个元素是否在列表中(返回布尔值)。
示例7:长度与检查
fruits = ["apple", "banana"]
# 列表长度
print(len(fruits)) # 输出:2
# 检查元素是否存在
print("apple" in fruits) # 输出:True
print("orange" in fruits) # 输出:False
5. 列表拼接与重复¶
+:拼接两个列表(返回新列表,原列表不变);*:重复列表n次(返回新列表);extend():在列表末尾添加另一个列表的所有元素(修改原列表)。
示例8:拼接与重复
list1 = [1, 2]
list2 = [3, 4]
# 拼接列表
combined = list1 + list2
print(combined) # 输出:[1, 2, 3, 4]
# 重复列表3次
repeated = list1 * 3
print(repeated) # 输出:[1, 2, 1, 2, 1, 2]
# extend方法(修改原列表)
list1.extend(list2)
print(list1) # 输出:[1, 2, 3, 4]
6. 排序与反转¶
sort():原地排序(直接修改原列表,升序);sorted():返回排序后的新列表(原列表不变);reverse():原地反转列表;reversed():返回反转的迭代器(需转成列表)。
示例9:排序与反转
numbers = [3, 1, 4, 2]
# 升序排序(原地修改)
numbers.sort()
print(numbers) # 输出:[1, 2, 3, 4]
# 降序排序(sorted加reverse=True)
sorted_desc = sorted(numbers, reverse=True)
print(sorted_desc) # 输出:[4, 3, 2, 1]
# 反转列表
numbers.reverse()
print(numbers) # 输出:[4, 3, 2, 1]
五、小总结¶
列表是Python中最基础也最实用的数据结构之一,掌握它的关键在于:
- 创建:用 [] 或 list() 初始化;
- 索引与切片:注意索引从0开始,切片语法 [start:end:step];
- 操作:增(append/insert)、删(remove/pop/del)、改(索引赋值)、查(len/in)等常用方法。
多动手练习,比如尝试用列表实现简单的待办事项管理、学生成绩统计等场景,就能更快熟练掌握啦!