Python 将字符串中的短语存储到列表中

Python 将字符串中的短语存储到列表中,python,list,Python,List,我发现这段代码完全符合预期,但我不明白为什么 其思想是从每一行中提取信息(没有空格或额外的表格符号) 我找到的代码如下所示: def extract_information(line: str) -> list: return [phrase.strip() for phrase in line.split(' ') if phrase] 而且它有效!但由于它是一行,我很难破译它,我习惯于完全写出循环 Ie. print(extract_information("Marni

我发现这段代码完全符合预期,但我不明白为什么

其思想是从每一行中提取信息(没有空格或额外的表格符号)

我找到的代码如下所示:

def extract_information(line: str) -> list:

return [phrase.strip() for phrase in line.split('  ') if phrase]
而且它有效!但由于它是一行,我很难破译它,我习惯于完全写出循环

Ie.

print(extract_information("Marni             FIGHTS FOR LIFE           Old Shack            Will rule the kingdom"))
应成为:

['Marni', 'FIGHTS FOR LIFE', 'Old Shack', 'Will rule the kingdom']

有人对此有线索吗?

这是列表理解。运行类似这样的简单操作,看看它是如何工作的。这基本上是一种以简洁的方式循环列表的方法

x=[1,2,3,4,5,6]
y=[a*2 for a in x]

Python支持名为列表理解的东西

摘要

它由括号组成,括号中包含表达式,后跟for 子句,则零个或多个for或if子句。表达式可以是 任何东西,这意味着你可以在列表中放入各种对象

幕后

因此,您可以这样理解上述表达式:

[return something for something in listofsomethings if something exists ]
请注意,上述表述仅用于教育目的,在任何方面均无效

因此,在您的特殊情况下,可以将其转换为:

for phrase in line.split('  '):
    if phrase:
        phrase.strip()

正如你所看到的,它做的正是你期望它做的。两者都做完全相同的事情,但列表理解通常被认为更像是python

我没有投反对票,但很明显,你的回答并没有真正解决OP的疑问。。。。当然,他们需要一个列表comp,但是
[a*2代表x中的a]
无法让他们到达那里。如果你愿意帮忙,但又不愿意详细回答这个问题,那么发表评论就更合适了。他在问为什么一行程序有效。我并没有试图修复他的代码或解决任何问题,只是帮他看看发生了什么。嗯,确实我读错了,但你的回答仍然不能解释代码为什么会工作。只是它使用了一个列表压缩。。。仅此而已。对列表理解的完整解释似乎有点超出了SO答案的范围。这就是文档的用途。这一切都是为了帮助他自己解决问题。