Bootstrap

【Python入门第七讲】列表(List)

在 Python 中,列表(List)是一种有序、可变的数据类型,用于存储一组元素。列表可以包含不同类型的元素,包括数字、字符串、甚至其他列表。列表是 Python 中最灵活且常用的数据结构之一,它融合了众多重要的编程概念。

请在此添加图片描述

列表是什么

在编程中,列表是一种数据结构,用于存储一组有序的元素。在 Python 中,列表是一种非常灵活和常用的数据类型,它可以包含不同类型的元素,包括数字、字符串、甚至其他列表。

特点和性质:

  1. 有序性: 列表中的元素是有序排列的,每个元素都有一个索引,可以通过索引来访问和操作元素。
  2. 可变性: 列表是可变的,也就是说,你可以修改列表中的元素、添加新元素或删除元素。
  3. 异构性: 列表可以包含不同类型的元素,例如整数、字符串、浮点数等。

如何创建列表

在Python中,使用方括号 [] 来创建一个列表,并在其中放置元素,并用逗号来分隔其中的元素。下面是一个简单的

列表示例

my_list = [1, 2, 3, 'a', 'b', 'c']

访问列表元素

列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。

  • 使用索引访问元素,索引从 0 开始。
print(my_list[0])  # 输出: 1
  • 列表切片:通过切片获取列表的子集。
subset = my_list[1:4] print(subset)  # 输出: [2, 3, 'a']

索引从 0 而不是 1 开始

在 Python 中,列表的索引是从 0 开始的,而不是从 1 开始。这意味着第一个元素的索引是 0,第二个元素的索引是 1,以此类推。这是 Python 中常见的索引规则。

举个例子

my_list = [10, 20, 30, 40, 50]

# 访问第一个元素
first_element = my_list[0]
print(first_element)  # 输出: 10

# 访问第三个元素
third_element = my_list[2]
print(third_element)  # 输出: 30

这种从 0 开始的索引规则是 Python 中一致的,包括字符串、元组等数据结构都是如此。这个规则对于许多编程语言来说都是相似的。

_Python为访问最后一个列表元素提供了一种特殊语法。_通过将索引指定为-1,可让Python返回最后一个列表元素:

my_list = [10, 20, 30, 40, 50]

# 访问-1元素
first_element = my_list[-1]
print(first_element)  # 输出: 50

列表也可嵌套

列表可以嵌套在其他列表中,形成二维甚至多维的数据结构。这种嵌套的结构可以更灵活地表示复杂的数据关系。下面是一个简单的二维列表的例子:

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 访问二维列表中的元素
print(matrix[0][0])  # 输出: 1
print(matrix[1][2])  # 输出: 6

在上面的例子中,matrix 是一个包含三个列表的列表,每个内部列表都表示矩阵中的一行。可以使用两个索引来访问二维列表中的元素,第一个索引选择子列表,第二个索引选择子列表中的元素。

列表的嵌套可以继续扩展,形成更复杂的数据结构。这在处理表格、矩阵、图等数据时非常有用。

基础操作符

列表基础操作符可参照下表:

符号说明
+列表拼接
*重复元素
in / not in成员判断
[index:index]列表截取

列表支持多种基础操作符,这些操作符包括:

1. 拼接操作符 +

list1 = [1, 2, 3]
list2 = [4, 5, 6]

# 拼接两个列表
result = list1 + list2
print(result)  # 输出: [1, 2, 3, 4, 5, 6]

2. 重复操作符 *

list1 = [1, 2, 3]

# 重复列表
result = list1 * 3
print(result)  # 输出: [1, 2, 3, 1, 2, 3, 1, 2, 3]

3. 成员运算符 innot in

list1 = [1, 2, 3]

# 判断元素是否在列表中
print(2 in list1)    # 输出: True
print(4 not in list1) # 输出: True

4. 切片操作符 [:]

list1 = [1, 2, 3, 4, 5]

# 获取子列表
subset = list1[1:4]
print(subset)  # 输出: [2, 3, 4]

列表基础函数

列表基础函数可参照下表:

函数说明
len计算列表的长度
max返回列表中最大的元素
min返回列表中最小的元素
sum用于计算列表中所有元素的总和
sorted函数用于对列表进行排序,返回一个新的列表
reverse反转列表中的元素
count统计某个元素在列表中出现的次数
index查找某个元素在列表中的第一个索引位置

示例:

1. len()

len() 函数用于获取列表的长度(元素个数):

my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print(length)  # 输出: 5

2. max()

max() 函数用于获取列表中的最大值:

my_list = [3, 8, 1, 6, 2]
max_value = max(my_list)
print(max_value)  # 输出: 8

3. min()

min() 函数用于获取列表中的最小值:

my_list = [3, 8, 1, 6, 2]
min_value = min(my_list)
print(min_value)  # 输出: 1

4. sum()

sum() 函数用于计算列表中所有元素的总和:

my_list = [3, 8, 1, 6, 2]
sum_value = sum(my_list)
print(sum_value)  # 输出: 20

5. sorted()

sorted() 函数用于对列表进行排序,返回一个新的列表:

my_list = [3, 8, 1, 6, 2]
sorted_list = sorted(my_list)
print(sorted_list)  # 输出: [1, 2, 3, 6, 8]

6. reverse()

reverse() 函数用于反转列表中的元素:

my_list = [3, 8, 1, 6, 2]
my_list.reverse()
print(my_list)  # 输出: [2, 6, 1, 8, 3]

7. count()

count() 函数用于统计某个元素在列表中出现的次数:

my_list = [1, 2, 2, 3, 2, 4, 2]
count_2 = my_list.count(2)
print(count_2)  # 输出: 4

8. index()

index() 函数用于查找某个元素在列表中的第一个索引位置:

my_list = [1, 2, 3, 4, 2, 5]
index_2 = my_list.index(2)
print(index_2)  # 输出: 1

这些函数能够帮助你更方便地操作和处理列表。

修改、添加和删除列表中的元素

在 Python 中,可以使用一些方法来修改、添加和删除列表中的元素。

修改元素

要修改列表中的元素,可以通过索引直接赋值新的值给该位置的元素。

my_list = [1, 2, 3, 4, 5]
my_list[2] = 99
print(my_list)  # 输出: [1, 2, 99, 4, 5]

添加元素

a. append()

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

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # 输出: [1, 2, 3, 4]

b. insert()

insert() 方法用于在列表的指定位置插入一个元素。

my_list = [1, 2, 3]
my_list.insert(1, 99)  # 在索引 1 的位置插入 99
print(my_list)  # 输出: [1, 99, 2, 3]

删除元素

a. del 语句

del 语句用于删除列表中指定位置的元素。

my_list = [1, 2, 3, 4, 5]
del my_list[2]  # 删除索引 2 的元素
print(my_list)  # 输出: [1, 2, 4, 5]

b. remove()

remove() 方法用于删除列表中指定的值的第一个匹配项。

my_list = [1, 2, 3, 2, 4]
my_list.remove(2)  # 删除值为 2 的第一个匹配项
print(my_list)  # 输出: [1, 3, 2, 4]

c. pop()

pop() 方法用于删除列表中指定位置的元素,并返回该元素的值。如果不提供索引,默认删除末尾的元素。

my_list = [1, 2, 3, 4, 5]
popped_value = my_list.pop(2)  # 删除索引 2 的元素,并返回其值
print(my_list)  # 输出: [1, 2, 4, 5]
print(popped_value)  # 输出: 3

这些操作允许你在列表中进行灵活的元素修改和管理。

组织列表

在创建的列表中,元素的排列顺序常常是无法预测的,因为并非总能控制用户提供数据的顺序。这虽然在大多数情况下都是不可避免的,但经常需要以特定的顺序呈现信息。 有时候,希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。 Python提供了很多组织列表的方式,可根据具体情况选用。

使用方法 sort()对列表进行永久性排序

sort() 方法可用于对列表进行永久性排序。默认情况下,sort() 将按升序排列列表的元素。

numbers = [4, 2, 8, 1, 6]
numbers.sort()
print(numbers)  # 输出: [1, 2, 4, 6, 8]

如果要按降序排列,可以将 reverse 参数设置为 True

numbers = [4, 2, 8, 1, 6]
numbers.sort(reverse=True)
print(numbers)  # 输出: [8, 6, 4, 2, 1]

注意,sort() 是一个永久性的操作,将直接修改原始列表。如果你不想修改原始列表,可以使用 sorted() 函数生成一个新的已排序列表。

numbers = [4, 2, 8, 1, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 2, 4, 6, 8]
print(numbers)  # 输出: [4, 2, 8, 1, 6] (原始列表未改变)

这种方式允许你在不改变原始数据的情况下获取已排序的版本。

倒着打印列表

要倒着打印列表,可以使用 reverse() 方法。这个方法会反转列表中元素的顺序,是一个永久性的操作。

numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers)  # 输出: [5, 4, 3, 2, 1]

如果只是想临时倒着打印列表,而不修改原始列表的顺序,可以使用 [::-1] 切片方式。

numbers = [1, 2, 3, 4, 5]
reversed_numbers = numbers[::-1]
print(reversed_numbers)  # 输出: [5, 4, 3, 2, 1]
print(numbers)  # 输出: [1, 2, 3, 4, 5] (原始列表未改变)

这样可以在需要时获得反转的版本,而不影响原始列表。

使用 extend 方法扩展列表

extend() 方法用于在列表的末尾一次性追加另一个可迭代对象(通常是另一个列表)的所有元素。

list1 = [1, 2, 3]
list2 = [4, 5, 6]

list1.extend(list2)

print(list1)  # 输出: [1, 2, 3, 4, 5, 6]

在上述例子中,list1 的末尾追加了 list2 中的所有元素。这是一个原地操作,会修改原始列表。

另外,可以使用 += 运算符来实现相同的效果:

list1 = [1, 2, 3]
list2 = [4, 5, 6]

list1 += list2

print(list1)  # 输出: [1, 2, 3, 4, 5, 6]

extend()+= 的区别在于,extend() 只接受可迭代对象作为参数,而 += 可以用于连接两个列表。

使用 copy 方法复制列表

在 Python 中,要复制一个列表而不改变原始列表,可以使用 copy() 方法或切片。

使用 copy() 方法:

original_list = [1, 2, 3]
copied_list = original_list.copy()

print(copied_list)  # 输出: [1, 2, 3]

使用切片:

original_list = [1, 2, 3]
copied_list = original_list[:]

print(copied_list)  # 输出: [1, 2, 3]

这两种方法都会生成原始列表的一个副本,对副本的任何修改都不会影响原始列表。

使用 clear 方法清空列表元素

clear() 方法用于清空列表中的所有元素,使其变为空列表。

my_list = [1, 2, 3, 4, 5]
print(my_list)  # 输出: [1, 2, 3, 4, 5]

my_list.clear()
print(my_list)  # 输出: []

在上述例子中,clear() 方法将 my_list 中的所有元素清空,使其成为空列表。这是一个原地操作,会修改原始列表。

;