📜  列表理解 python if else - Python (1)

📅  最后修改于: 2023-12-03 15:07:11.114000             🧑  作者: Mango

列表理解 Python if else

在Python中,我们可以使用列表理解(List Comprehension)来简洁地创建一个新的列表,该列表将满足特定条件的元素从原始列表中提取出来。列表理解通常使用if-else语句来过滤或转换元素。

基础语法

列表理解基本语法如下所示:

[expression for item in iterable if condition]

其中:

  • expression:用于计算每个元素的表达式;
  • item:用于表示每一个元素的变量名;
  • iterable:可迭代的对象,如列表、元组或字符串等;
  • 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 else语句

除了条件语句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)和嵌套列表理解,可以创建高效且复杂的数据结构。