Python 嵌套列表条件选择

什么是嵌套列表?

在Python中,嵌套列表是指列表中的元素也是一个列表。可以将嵌套列表看作是一个二维数组,其中每个元素都是一个子列表。

嵌套列表的应用场景

嵌套列表在编程中有广泛的应用场景,特别是在处理多维数据时非常有用。例如,当我们需要表示一个学生名单,其中包含每个学生的姓名、年龄和成绩时,可以使用嵌套列表来表示:

students = [
    ['Alice', 18, 90],
    ['Bob', 17, 85],
    ['Chris', 16, 95]
]

嵌套列表的条件选择

在实际编程中,我们经常需要根据某些条件从嵌套列表中选择特定的元素。Python提供了多种方法来实现这一功能,下面将介绍三种常用的方法。

方法一:使用for循环和if语句

我们可以使用for循环和if语句来遍历嵌套列表,并根据条件选择特定的元素。下面是一个示例代码:

students = [
    ['Alice', 18, 90],
    ['Bob', 17, 85],
    ['Chris', 16, 95]
]

selected_students = []

for student in students:
    if student[2] >= 90:
        selected_students.append(student)

print(selected_students)

在上述代码中,我们遍历了students列表中的每个元素,即每个学生的数据。然后,我们使用if语句判断学生的成绩是否大于等于90,如果是,则将该学生添加到selected_students列表中。最后,我们打印出满足条件的学生列表。

方法二:使用列表推导式

除了使用for循环和if语句,我们还可以使用列表推导式来实现条件选择。列表推导式是一种简洁而强大的语法,可以根据条件从一个列表中选择元素并创建一个新的列表。下面是一个示例代码:

students = [
    ['Alice', 18, 90],
    ['Bob', 17, 85],
    ['Chris', 16, 95]
]

selected_students = [student for student in students if student[2] >= 90]

print(selected_students)

在上述代码中,我们使用列表推导式[student for student in students if student[2] >= 90]来选择满足条件的学生。列表推导式的语法非常简洁,可以大大减少代码量。

方法三:使用filter()函数

另一种常用的方法是使用Python内置的filter()函数。filter()函数可以根据指定的条件从一个可迭代对象中选择元素,并返回一个迭代器。下面是一个示例代码:

students = [
    ['Alice', 18, 90],
    ['Bob', 17, 85],
    ['Chris', 16, 95]
]

selected_students = list(filter(lambda student: student[2] >= 90, students))

print(selected_students)

在上述代码中,我们使用filter()函数来选择满足条件的学生。filter()函数接受两个参数,第一个参数是一个函数(这里使用了匿名函数lambda),第二个参数是一个可迭代对象(这里是students列表)。filter()函数将返回一个迭代器,我们可以将其转换为列表。

序列图

下面是一个使用嵌套列表条件选择的序列图示例:

sequenceDiagram
    participant A as 嵌套列表
    participant B as for循环和if语句
    participant C as 列表推导式
    participant D as filter()函数
    participant E as 结果列表

    A->>B: 遍历嵌套列表
    B->>B: 判断条件
    B->>B: 添加满足条件的元素到结果列表
    B->>E: 返回结果列表

    A->>C: 遍历嵌套列表
    C->>C: 判断条件
    C->>E: 添加满足条件的元素