在这里您不需要任何条件表达式*,因为 str.split()
总是返回一个列表,即使只包含一个单词:
lst[:] = [word for words in lst for word in words.split()]
演示:
>>> lst = ['word','word','multiple words','word']
>>> [word for words in lst for word in words.split()]
['word', 'word', 'multiple', 'words', 'word']
条件表达式可以在语法中使用简单表达式的任何地方使用; 这意味着它可以在列表显示语法中的任何标有expression
或old_expression
的位置使用:
list_display ::= "[" [expression_list | list_comprehension] "]"
list_comprehension ::= expression list_for
list_for ::= "for" target_list "in" old_expression_list [list_iter]
old_expression_list ::= old_expression [("," old_expression)+ [","]]
old_expression ::= or_test | old_lambda_expr
list_iter ::= list_for | list_if
list_if ::= "if" old_expression [list_iter]
因此,列表推导式的第一部分会产生最外层迭代器(仅评估一次),包括 if
表达式或任何嵌套迭代器(每次下一个外部 for
循环迭代时都会评估)。
*它被称为 条件表达式;它是一个三元运算符,但 SQL 的 BETWEEN
运算符也是。