Python列表

发布于:2025-08-06 ⋅ 阅读:(20) ⋅ 点赞:(0)
唯有热爱,恒常如新

🌟引言

在Python中,序列是一种非常重要的数据结构,它用于存储和组织多个数据项。序列类型包括字符串(str)、列表(list)、元组(tuple)等。它们都具有有序性,即每个元素都有一个固定的顺序。本文将深入探讨Python序列——列表的特性、操作方法以及在实际编程中的应用。

一、序列的特性

1. 有序性

序列中的元素是有序的,每个元素都有一个固定的索引(从0开始)。我们可以通过索引访问序列中的任意元素。

2. 可迭代性

序列是可迭代的,这意味着我们可以使用 for 循环遍历序列中的每个元素。

3. 支持切片操作

序列支持切片操作,可以提取序列中的一个子序列。

4. 支持成员运算符

序列支持成员运算符 in 和 not in,用于判断某个元素是否存在于序列中。


二、列表

列表是Python中最常用的数据结构之一,用于存储多个元素。列表是可变的,可以随时添加、删除或修改元素,列表的数据项不需要类型相同

# 创建列表
empty_list = []  # 空列表
numbers = [1, 2, 3, 4, 5]  # 整数列表
fruits = ["apple", "banana", "cherry"]  # 字符串列表
mixed_list = [1, "hello", 3.14, [1, 2, 3]]  # 包含多种类型数据的列表

1. 列表的创建

创建列表非常简单,只需要将元素放在方括号[ ]中,元素之间用逗号分隔即可。列表可以包含不同类型的数据,如整数、浮点数、字符串,甚至其他列表。

1.1 创建空列表

可以使用空的方括号[]或 list() 函数创建一个空列表。

# 创建空列表
empty_list1 = []
empty_list2 = list()

print(empty_list1)  # 输出:[]
print(empty_list2)  # 输出:[]

1.2 创建包含多个元素的列表

可以将多个元素放在方括号[ ]中,元素之间用逗号分隔。

# 创建包含多个元素的列表
numbers = [1, 2, 3, 4, 5]  # 整数列表
fruits = ["apple", "banana", "cherry"]  # 字符串列表
mixed_list = [1, "hello", 3.14, [1, 2, 3]]  # 包含多种类型数据的列表

print(numbers)  # 输出:[1, 2, 3, 4, 5]
print(fruits)  # 输出:['apple', 'banana', 'cherry']
print(mixed_list)  # 输出:[1, 'hello', 3.14, [1, 2, 3]]

1.3 使用 list() 函数从其他可迭代对象创建列表

list() 函数可以将其他可迭代对象(如字符串、元组、集合等)转换为列表。

# 使用list()函数从其他可迭代对象创建列表
string = "hello"
string_list = list(string)
print(string_list)  # 输出:['h', 'e', 'l', 'l', 'o']

tuple_data = (1, 2, 3)
tuple_list = list(tuple_data)
print(tuple_list)  # 输出:[1, 2, 3]

set_data = {1, 2, 3}
set_list = list(set_data)
print(set_list)  # 输出:[1, 2, 3](注意:集合是无序的,因此列表的顺序可能不同)

2.  列表的删除

Python提供了多种方法来删除列表中的元素,包括删除特定元素、删除指定索引的元素以及删除整个列表。

2.1 删除特定元素

使用 remove() 方法可以删除列表中第一个匹配的元素。

# 删除特定元素
fruits = ["apple", "banana", "cherry", "orange"]
fruits.remove("banana")  # 删除第一个匹配的元素
print(fruits)  # 输出:['apple', 'cherry', 'orange']

如果元素不存在于列表中,remove() 方法会抛出一个 ValueError 异常

2.2 删除指定索引的元素

使用pop() 方法可以删除并返回指定索引的元素。如果不指定索引,则默认删除并返回列表最后一个元素。

# 删除指定索引的元素
fruits = ["apple", "banana", "cherry", "orange"]
popped_fruit = fruits.pop(1)  # 删除索引为1的元素
print(popped_fruit)  # 输出:banana
print(fruits)  # 输出:['apple', 'cherry', 'orange']

popped_fruit = fruits.pop()  # 删除最后一个元素
print(popped_fruit)  # 输出:orange
print(fruits)  # 输出:['apple', 'cherry']

2.3 使用 del 语句删除元素或整个列表

del 语句可以删除指定索引的元素,也可以删除整个列表

# 使用del语句删除指定索引的元素
fruits = ["apple", "banana", "cherry", "orange"]
del fruits[1]  # 删除索引为1的元素
print(fruits)  # 输出:['apple', 'cherry', 'orange']

# 使用del语句删除整个列表
del fruits
# print(fruits)  # 错误:fruits已被删除

2.4 清空列表

如果只想清空列表中的所有元素,但保留列表本身,可以使用 clear() 方法。

# 清空列表
fruits = ["apple", "banana", "cherry", "orange"]
fruits.clear()  # 清空列表
print(fruits)  # 输出:[]

3. 访问列表元素

3.1 索引访问

列表中的每个元素都有一个唯一的索引,索引从0开始。可以通过索引直接访问列表中的元素。

# 创建一个列表
fruits = ["apple", "banana", "cherry", "orange", "kiwi"]

# 访问第一个元素
print(fruits[0])  # 输出:apple

# 访问最后一个元素
print(fruits[-1])  # 输出:kiwi

# 访问中间的元素
print(fruits[2])  # 输出:cherry

3.2 负索引访问

负索引从列表的末尾开始计数,-1表示最后一个元素,-2表示倒数第二个元素,依此类推。

# 使用负索引访问
print(fruits[-1])  # 输出:kiwi
print(fruits[-2])  # 输出:orange
print(fruits[-3])  # 输出:cherry

3.3 切片访问

切片操作可以提取列表的一个子列表。切片的语法是[start:end:step],其中:

  • start:起始索引(包含)。

  • end:结束索引(不包含)。

  • step:步长(默认为1)。

# 切片访问
print(fruits[1:4])  # 输出:['banana', 'cherry', 'orange']
print(fruits[:3])   # 输出:['apple', 'banana', 'cherry']
print(fruits[3:])   # 输出:['orange', 'kiwi']
print(fruits[::2])  # 输出:['apple', 'cherry', 'kiwi']
print(fruits[::-1]) # 输出:['kiwi', 'orange', 'cherry', 'banana', 'apple']

4. 列表元素的添加、删除、修改

4.1 添加元素

1. append()

append() 方法用于在列表的末尾添加一个元素。

# 创建一个列表
fruits = ["apple", "banana", "cherry"]

# 使用append()方法添加元素
fruits.append("orange")
print(fruits)  # 输出:['apple', 'banana', 'cherry', 'orange']
2. insert()

insert() 方法用于在指定位置插入一个元素。它需要两个参数:插入位置的索引要插入的元素

# 使用insert()方法插入元素
fruits.insert(1, "grape")
print(fruits)  # 输出:['apple', 'grape', 'banana', 'cherry', 'orange']
3. extend()

extend() 方法用于将另一个列表的元素添加到当前列表的末尾。它也可以接受任何可迭代对象(如元组、集合等)。

# 创建另一个列表
more_fruits = ["kiwi", "mango"]

# 使用extend()方法扩展列表
fruits.extend(more_fruits)
print(fruits)  # 输出:['apple', 'grape', 'banana', 'cherry', 'orange', 'kiwi', 'mango']

4.2 删除元素

1. remove() 

remove() 方法用于删除列表中第一个匹配的元素。如果元素不存在于列表中,会抛出ValueError 异常

# 使用remove()方法删除元素
fruits.remove("banana")
print(fruits)  # 输出:['apple', 'grape', 'cherry', 'orange', 'kiwi', 'mango']
2. pop() 

pop() 方法用于删除并返回指定索引的元素。如果不指定索引,默认删除并返回列表最后一个元素。如果索引超出范围,会抛出 IndexError 异常。

# 使用pop()方法删除元素
popped_fruit = fruits.pop(2)  # 删除索引为2的元素
print(popped_fruit)  # 输出:cherry
print(fruits)  # 输出:['apple', 'grape', 'orange', 'kiwi', 'mango']

# 删除最后一个元素
popped_fruit = fruits.pop()
print(popped_fruit)  # 输出:mango
print(fruits)  # 输出:['apple', 'grape', 'orange', 'kiwi']
3. del语句

del语句用于删除指定索引的元素,也可以删除整个列表。

# 使用del语句删除指定索引的元素
del fruits[1]  # 删除索引为1的元素
print(fruits)  # 输出:['apple', 'orange', 'kiwi']

# 删除整个列表
del fruits
# print(fruits)  # 抛出NameError: name 'fruits' is not defined
4. 清空列表

如果只想清空列表中的所有元素,但保留列表本身,可以使用 clear() 方法。

# 创建一个列表
fruits = ["apple", "orange", "kiwi"]

# 使用clear()方法清空列表
fruits.clear()
print(fruits)  # 输出:[]

4.3 修改元素

列表是可变的,这意味着我们可以随时修改列表中的元素。修改元素非常简单,只需要通过索引直接赋值即可。

# 创建一个列表
fruits = ["apple", "banana", "cherry"]

# 修改指定索引的元素
fruits[1] = "grape"
print(fruits)  # 输出:['apple', 'grape', 'cherry']

如果需要修改多个元素,可以使用循环结合索引进行操作。

# 修改多个元素
for i in range(len(fruits)):
    fruits[i] = fruits[i].upper()  # 将所有元素转换为大写
print(fruits)  # 输出:['APPLE', 'GRAPE', 'CHERRY']

5. 切片操作

5.1 列表切片的基本语法

list[start:end:step]
  • start:切片的起始索引(包含)。如果不指定,默认从列表的开头开始。

  • end:切片的结束索引(不包含)。如果不指定,默认到列表的末尾。

  • step:步长,用于指定切片的间隔。如果不指定,默认为1。


5.2 常见切片操作

1. 提取子序列

通过指定 start 和 end 索引,可以提取列表的一个子序列

# 创建一个列表
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 提取从索引1到索引5的子列表(不包含索引5)
sub_list = numbers[1:5]
print(sub_list)  # 输出:[1, 2, 3, 4]

2. 提取列表的前N个元素

通过省略 start 索引,可以从列表的开头提取指定数量的元素。

# 提取前3个元素
first_three = numbers[:3]
print(first_three)  # 输出:[0, 1, 2]

3. 提取列表的后N个元素

通过省略 end 索引,可以从指定的起始位置提取到列表的末尾。

# 提取从索引3到末尾的元素
last_three = numbers[3:]
print(last_three)  # 输出:[3, 4, 5, 6, 7, 8, 9]

4. 提取整个列表

通过省略 start 和 end 索引,可以提取整个列表的副本。

# 提取整个列表的副本
copy_of_numbers = numbers[:]
print(copy_of_numbers)  # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

5. 使用步长提取元素

通过指定 step 参数,可以以指定的间隔提取元素。

# 提取每隔2个元素
every_second = numbers[::2]
print(every_second)  # 输出:[0, 2, 4, 6, 8]

6. 反转列表

通过设置 step 为 -1 ,可以反转列表

# 反转列表
reversed_numbers = numbers[::-1]
print(reversed_numbers)  # 输出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

🌟 感谢您的阅读!🌟
如果你在阅读这篇文章的过程中有所收获,或者觉得内容对你有帮助,不妨给我一个小小的鼓励吧!👇

  • 点赞🥥:一个简单的点赞,是我继续创作的最大动力!
  • 收藏🦋:方便你随时回顾,也让我知道这篇文章对你真的有用!
  • 关注🍍:关注我,获取更多高质量的技术文章和干货分享!

你的每一次点赞、收藏和关注,都是对我最大的支持!如果你有任何疑问或想法,欢迎在评论区留言,让我们一起在技术的道路上不断前行,共同成长!🚀


网站公告

今日签到

点亮在社区的每一天
去签到