在 Python 的列表推导中使用 elif 语句
Using elif statement in a List comprehension in Python
elif
要在列表理解中使用语句:
- 使用
if
语句检查条件。 - 使用
else
语句来实现elif
子句。 - 如果两个条件都不满足,则使用第二个
else
语句返回一个值。
主程序
a_list = [1, 2, 2, 5, 1, 9] new_list = [ 'a' if item == 1 else 'b' if item == 2 else 'c' for item in a_list ] print(new_list) # 👉️ ['a', 'b', 'b', 'c', 'a', 'c']
列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。
我们使用一个else
语句来实现elif
列表理解中的一个子句。
该if
语句检查当前项是否等于1
,如果满足条件,a
则返回。
该
else
语句返回另一个条件。条件检查项目是否等于2
。如果满足条件,则返回。 b
如果两个条件都不满足,c
则返回。
在伪代码中,语法如下所示。
主程序
new_list = [ return A if condition_is_met else return B if condition_is_met else return C for item in a_list ]
请注意,if
andelse
语句位于列表理解的开头。
以下是我们如何使用
for
循环从示例中实现列表理解。
主程序
a_list = [1, 2, 2, 5, 1, 9] new_list = [] for item in a_list: if item == 1: new_list.append('a') elif item == 2: new_list.append('b') else: new_list.append('c') # 👇️ ['a', 'b', 'b', 'c', 'a', 'c'] print(new_list)
代码示例中的for
循环等效于列表理解。
elif
这是在列表理解中使用语句的另一个示例。
主程序
a_list = [1, 2, 2, None, 1, None] new_list = [ 0 if item is None else item if item % 2 == 0 else item + 11 for item in a_list ] print(new_list) # 👉️ [12, 2, 2, 0, 12, 0]
该if
语句检查当前项目是否存在None
,如果满足条件,0
则返回。
该
else
语句实现了另一个条件。该条件检查数字除以2
的余数是否为。 0
如果满足条件,则返回该项目,否则,返回该项目item + 11
。
如果您只需要在列表理解中实现 if-else 语句,则可以使用相同的方法。
主程序
a_list = [1, 2, 2, None, 1, None] new_list = [ 0 if item is None else item for item in a_list ] print(new_list) # 👉️ [1, 2, 2, 0, 1, 0]
该if
语句检查项目是否为None
。如果满足条件,0
则退货,否则,退货。
伪代码中的语法如下所示。
主程序
new_list = [ return A if condition_is_met else return B for item in list ]
请注意,if
andelse
语句是在列表理解的开头指定的。
如果您在列表理解中只有一个
if
语句,请确保在最后指定它。主程序
a_list = [1, 2, 2, None, 1, None] new_list = [ item for item in a_list if item is not None ] print(new_list) # 👉️ [1, 2, 2, 1]
在列表理解中实现if-elif-else
语句可能会使您的代码更难阅读。
如果是这种情况,只需使用for
循环即可。
主程序
a_list = [1, 2, 2, None, 1, None] new_list = [] for item in a_list: if item is None: new_list.append(0) elif item % 2 == 0: new_list.append(item) else: new_list.append(item + 11) print(new_list) # 👉️ [12, 2, 2, 0, 12, 0]
for
循环方法有点冗长,但在我看来,它更具可读性和直观性。