📅  最后修改于: 2023-12-03 15:07:11.114000             🧑  作者: Mango
在Python中,我们可以使用列表理解(List Comprehension)来简洁地创建一个新的列表,该列表将满足特定条件的元素从原始列表中提取出来。列表理解通常使用if-else语句来过滤或转换元素。
列表理解基本语法如下所示:
[expression for item in iterable if condition]
其中:
以下是一个简单的例子,它将一个列表中的所有偶数加倍:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = [num * 2 for num in numbers if num % 2 == 0]
print(result) # 输出[4, 8, 12, 16, 20]
这里的计算表达式是num * 2
,item表示 numbers 列表中的每个元素(num),iterable 是 numbers 列表,条件是 num % 2 == 0。
除了条件语句if,列表理解还可以使用if-else语句进行更复杂的条件操作。
当条件成立时,expression将返回表达式的值,否则返回else后面的表达式的值。
[expression_if if condition else expression_else for item in iterable]
以下是一个使用if-else语句的例子,它将一个列表中的奇数变为负数,偶数则不变:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = [num if num % 2 == 0 else -num for num in numbers]
print(result) # 输出[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
在这个例子中,如果 num % 2 == 0 成立,就返回 num,否则返回 -num。
我们也可以使用嵌套的列表理解语法来创建更复杂的列表。以下是一个例子,它将一个矩阵的每个元素转置成一个新的矩阵:
matrix = [[1, 2], [3, 4], [5, 6], [7, 8]]
result = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
print(result) # 输出[[1, 3, 5, 7], [2, 4, 6, 8]]
在这个例子中,我们使用一个for循环来遍历矩阵的每一列(range(len(matrix[0]))
),内部的列表理解用于提取每一列中的元素。
列表理解是一种非常强大且常用的Python特性。它可以使代码更简洁,同时通过使用条件语句(if/else)和嵌套列表理解,可以创建高效且复杂的数据结构。