跳到主要内容

Python 列表

提示
  1. 创建和访问列表:列表通过在 [] 中放置元素并用逗号分隔来创建,可以存储不同类型和重复的元素,并通过索引访问。
  2. 操作列表元素:列表提供了 append(), extend(), insert() 等方法用于添加元素,以及 remove(), pop(), clear() 等方法用于删除元素。
  3. 列表推导式和遍历:列表推导式提供了创建列表的简洁方式,for 循环可用于遍历列表元素,且可以使用 in 关键字检查元素是否存在于列表中。

在 Python 中,列表用于一次存储多个数据。

假设我们需要记录 5 个学生的年龄。我们可以创建一个列表,而不是创建 5 个单独的变量。

列表元素

创建列表

我们通过将元素放在 [] 中并用逗号分隔来创建列表。例如,

ages = [19, 26, 23]

print(ages)

# 输出:[19, 26, 23]

这里,我们创建了一个名为 ages 的列表,其中包含 3 个整数项。

列表可以:

  • 存储不同类型的元素(整数、浮点数、字符串等)。
  • 存储重复的元素。
# 不同数据类型元素的列表
list1 = [1, "Hello", 3.4]

# 重复元素的列表
list1 = [1, "Hello", 3.4, "Hello", 1]

# 空列表
list3 = []

注意:我们也可以使用 list() 构造函数创建列表。

访问列表元素

在 Python 中,列表是有序的,列表中的每个项都与一个数字相关联。这个数字被称为列表的索引

第一个元素的索引是 0,第二个元素是 1,依此类推。例如,

languages = ["Python", "Swift", "C++"]

# 访问索引 0 处的项
print(languages[0]) # Python

# 访问索引 2 处的项
print(languages[2]) # C++

在上面的示例中,我们创建了一个名为 languages 的列表。

Python 中的列表索引

这里,我们可以看到每个列表项都与索引号相关联。我们使用了索引号来访问这些项。

记住:列表索引总是从 0 开始。因此,列表的第一个元素位于索引 0,而不是 1

Python 中的负索引

Python 允许其序列使用负索引。索引 -1 指的是最后一个项,-2 指的是倒数第二个项,依此类推。

让我们看一个示例,

languages = ["Python", "Swift", "C++"]

# 访问索引 0 处的项
print(languages[-1]) # C++

# 访问索引 2 处的项
print(languages[-3]) # Python

列表负索引

注意:如果指定的索引在列表中不存在,Python 会抛出 IndexError 异常。

列表切片

在 Python 中,我们可以使用切片运算符 : 来访问列表的一部分。例如,

# Python 中的列表切片
my_list = ['p','r','o','g','r','a','m','i','z']

# 索引 2 到索引 4 的项
print(my_list[2:5])

# 索引 5 到结尾的项
print(my_list[5:])

# 开始到结尾的项
print(my_list[:])

输出

['o', 'g', 'r']
['a', 'm', 'i', 'z']
['p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z']

这里,

  • my_list[2:5] 返回索引 2 到索引 4 的列表。
  • my_list[5:] 返回索引 5 到结尾的列表。
  • my_list[:] 返回所有列表项。

注意:当我们切片列表时,起始索引是包含的,但结束索引是排除的。

向列表添加元素

列表是可变的(可改变

的)。这意味着我们可以从列表中添加和移除元素。

Python 列表提供了不同的方法来添加项。

1. 使用 append()

append() 方法在列表的末尾添加一个项。例如,

numbers = [21, 34, 54, 12]

print("Append 之前:", numbers)

# 使用 append 方法
numbers.append(32)

print("Append 之后:", numbers)

输出

Append 之前: [21, 34, 54, 12]
Append 之后: [21, 34, 54, 12, 32]

在上面的示例中,我们创建了一个名为 numbers 的列表。注意这行代码

numbers.append(32)

这里,append() 在数组的末尾添加了 32

2. 使用 extend()

我们使用 extend() 方法在列表末尾添加一个可迭代对象(列表、元组字符串字典 等)的所有项。例如,

numbers = [1, 3, 5]

even_numbers = [4, 6, 8]

# 将 even_numbers 的元素添加到 numbers 列表中
numbers.extend(even_numbers)

print("Append 之后的列表:", numbers)

输出

Append 之后的列表: [1, 3, 5, 4, 6, 8]

这里,numbers.extend(even_numbers) 将 even_numbers 的所有元素添加到 numbers 列表中。

3. 使用 insert()

我们使用 insert() 方法在指定索引处添加一个元素。

numbers = [10, 30, 40]

# 在索引 1(第二个位置)插入一个元素
numbers.insert(1, 20)

print(numbers) # [10, 20, 30, 40]

更改列表项

Python 列表是可变的。这意味着列表是可更改的。我们可以通过使用 = 运算符为列表项赋予新值来更改列表项。例如,

languages = ['Python', 'Swift', 'C++']

# 将第三项更改为 'C'
languages[2] = 'C'

print(languages) # ['Python', 'Swift', 'C']

这里,最初索引 3 的值为 'C++'。我们然后使用

languages[2] = 'C'

将值更改为 'C'

从列表中移除项

1. 使用 del 语句

在 Python 中,我们可以使用 del 语句 从列表中删除一个或多个项。例如,

languages = ['Python', 'Swift', 'C++', 'C', 'Java', 'Rust', 'R']

# 删除第二个项
del languages[1]
print(languages) # ['Python', 'C++', 'C', 'Java', 'Rust', 'R']

# 删除最后一个项
del languages[-1]
print(languages) # ['Python', 'C++', 'C', 'Java', 'Rust']

# 删除前两个项
del languages[0 : 2] # ['C', 'Java', 'Rust']
print(languages)

2. 使用 remove()

我们还可以使用 remove() 方法删除列表中的项。例如,

languages = ['Python', 'Swift', 'C++', 'C', 'Java', 'Rust', 'R']

# 从列表中删除 'Python'
languages.remove('Python')

print(languages) # ['Swift', 'C++', 'C', 'Java', 'Rust', 'R']

这里,languages.remove('Python') 从 languages 列表中删除了 'Python'

列表方法

Python 有许多有用的列表方法,这使得处理列表变得非常容易。

方法描述
append()在列表末尾添加一个元素
extend()将一个可迭代对象的所有元素添加到列表末尾
insert()在指定索引处插入一个元素
remove()删除给定索引处的元素
pop()返回并删除给定索引处的元素
clear()删除列表中的所有元素
index()返回第一个匹配项的索引
count()返回列表中指定元素的数量
sort()按升序/降序排序列表
reverse()反转列表中的元素
copy()返回列表的浅拷贝

遍历列表

我们可以使用for 循环遍历列表中的元素。例如,

languages = ['Python', 'Swift', 'C++']

# 遍历列表
for language in languages:
print(language)

输出

Python
Swift
C++

检查列表中是否存在元素

我们使用 in 关键字检查列表中是否存在某个元素。例如,

languages = ['Python', 'Swift', 'C++']

print('C' in languages) # False
print('Python' in languages) # True

这里,

  • 'C' 不在 languages 中,'C' in languages 的值为 False
  • 'Python'languages 中,'Python' in languages 的值为 True

列表长度

我们使用 len() 函数来找出列表的大小。例如,

languages = ['Python', 'Swift', 'C++']

print("列表: ", languages)

print("元素总数: ", len(languages)) # 3

输出

列表: ['Python', 'Swift', 'C++']
元素总数: 3

列表推导式

列表推导式 是创建列表的简洁优雅方式。例如,

# 创建一个列表,其中的值为 n ** 2,其中 n 是从 1 到 5 的数字
numbers = [n**2 for n in range(1, 6)]

print(numbers)

# 输出: [1, 4, 9, 16, 25]

这里,这段代码

numbers = [n**2 for n in range(1, 6)]

等价于

numbers = []

for n in range(1, 6):
numbers.append(n**2)