完整的循环如下所示:
line_list = []
for line in file.splitlines():
for item in my_list:
if item in line:
line_list.append(line)
放在同一行,像这样(不是真正的 Python 语法):
line_list = []
for line in file.splitlines(): for item in my_list: if item in line: line_list.append(line)
当然,.append() 部分是所有推导共有的,所以我们把它放在开头:
line_list = [line for line in file.splitlines() for item in my_list if item in line]
如果你只是想到这样的列表推导,应该很容易弄清楚使用了什么顺序。
当您有 else 语句时,不要让它让您感到困惑。例如:
line_list = []
for line in file.splitlines():
if line == "yes":
line_list.append("no")
else:
line_list.append(line)
将被解释为:
line_list = ["no" if line == "yes" else line for line in file.splitlines()]
以if-else 开头。为什么?你问。好吧,它本来可以这样写的:
line_list = []
for line in file.splitlines():
line_list.append("no" if line == "yes" else line)
你看,理解开头的部分仍然和传递给.append()的部分一样。 else 子句不是理解语法的一部分;它是该语言的一个独立特征。
不过,@TigerhawkT3 对使用 any() 提出了一个很好的观点。