你並不需要任何條件表達式*這裏,作爲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']
的條件表達式可用於任何可以在語法中使用簡單表達式的地方;這意味着在任何地方它說,在list display grammarexpression
或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
循環的每次迭代)。
* 它被稱爲條件表達式;它是a三元運算符,但運算符也是SQL BETWEEN
。
我強烈建議你想到其他方法來實現這一點。理解中的嵌套循環相對難以閱讀。 – Marcin