在 Python 中使用 if-else 语句进行列表推导
List comprehension with if-else statement in Python
在 if-else 中使用列表推导式:
if
在列表理解中首先指定语句。- 在 之后指定
else
语句if
。 - 在列表理解中迭代一个集合。
主程序
a_list = [2, 4, 8, 13, 10] new_list = [ item if item > 8 else item + 10 for item in a_list ] print(new_list) # 👉️ [12, 14, 18, 13, 10]
列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。
在列表理解中使用 if-else 的语法如下。
主程序
new_list = [ return A if condition_is_met else return B for item in list ]
该语法a if condition else b
称为三元运算符。
主程序
site = 'bobbyhadz.com' result = 'a' if len(site) > 1 else 'b' print(result) # 👉️ 'a'
三元运算符如果满足条件则返回左边的值,否则返回右边的值。
如果您的列表理解中只有一个if
语句,请在末尾指定条件。
主程序
a_list = [2, 4, 8, 13, 10] new_list = [ item for item in a_list if item > 8 ] print(new_list) # 👉️ [13, 10]
但是,您不能在列表理解的末尾使用 if/else 语句,因为它是无效语法。
这是另一个例子。
主程序
a_list = [2, None, 4, None, 8] new_list = [ item if item is not None else 0 for item in a_list ] print(new_list) # 👉️ [2, 0, 4, 0, 8]
我们使用列表理解来迭代列表。
该
if
语句检查当前项目是否存在,如果满足条件,则返回该项目。 None
否则,else
语句返回0
。
列表理解等效于以下for
循环。
主程序
a_list = [2, None, 4, None, 8] new_list = [] for item in a_list: if item is not None: new_list.append(item) else: new_list.append(0) print(new_list) # 👉️ [2, 0, 4, 0, 8]
您还可以在列表理解中使用
if
with multipleelse
语句来实现elif
条件。主程序
a_list = [2, 4, 8, 4, 19] new_list = ['a' if item == 4 else 'b' if item == 8 else 'c' for item in a_list] print(new_list) # 👉️ ['c', 'a', 'b', 'a', 'c']
该if
语句检查当前项是否等于4
,如果满足条件,a
则返回字母。
该else
语句返回另一个条件。
条件检查项目是否等于
8
。如果满足条件,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 ]
以下是如何使用for
循环实现上一个示例中的列表推导式。
主程序
a_list = [2, 4, 8, 4, 19] new_list = [] for item in a_list: if item == 4: new_list.append('a') elif item == 8: new_list.append('b') else: new_list.append('c') print(new_list) # 👉️ ['c', 'a', 'b', 'a', 'c']
我们检查该项目是否等于并在满足条件时4
附加到新列表。a
否则,该
elif
语句检查当前项是否等于8
。如果满足条件,我们将附加b
到新列表。如果不满足条件,则else
语句运行,我们追加c
到列表中。
检查列表理解中的太多条件可能会变得比必要的更复杂。
在这些情况下,您可以使用一个简单的for
循环来提高可读性。