我发现这段代码完全符合预期,但我很困惑为什么。
这个想法是从每一行提取信息(没有空格或额外的制表符号)。
我找到的代码如下:
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']
任何人都有这方面的线索吗?
答案 0 :(得分:0)
Python支持名为列表理解的内容。
<强>摘要强>
它由包含表达式后跟for的括号组成 条款,然后零或更多for或if子句。表达式可以是 任何东西,意味着你可以在列表中放入各种对象。
幕后花絮
因此,您可以这样阅读上述表达式:
[return something for something in listofsomethings if something exists ]
请注意,上述表达仅用于教育目的,并且无论如何都无效。
因此,在您的特定情况下,它可以转换为:
for phrase in line.split(' '):
if phrase:
phrase.strip()
正如您所看到的,它完全符合您的预期。两者都完全相同,但列表理解通常被认为是更加pythonic。
答案 1 :(得分:-2)
这是列表理解。运行这样简单的东西,看看它是如何工作的。它基本上是一种以简洁方式循环遍历列表的方法。
x=[1,2,3,4,5,6]
y=[a*2 for a in x]