蟒蛇表达
我是Python新手,在阅读BeautifulSoup教程时,我不明白这个表达式“[x for x in titles if x.findChildren()][:-1]”我不明白?你能解释一下吗
titles = [x for x in titles if x.findChildren()][:-1]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
从 [:-1] 开始,这将提取一个包含除最后一个元素之外的所有元素的列表。
第一部分,将列表提供给 [:-1] (在 python 中切片)
这会生成一个列表,其中包含列表“titles”中的所有元素 (x),满足条件(对于 x.findChildren 返回 True ())
To start with [:-1], this extracts a list that contains all elements except the last element.
The comes the first portion, that supplies the list to [:-1] (slicing in python)
This generates a list that contains all elements (x) in the list "titles", that satisfies the condition (returns True for x.findChildren())
这是一个列表理解。
它几乎相当于:
Python 中我最喜欢的功能之一:)
It's a list comprehension.
It's pretty much equivalent to:
One of my favorite features in Python :)
如果 EXP,则 X in Y 的表达式
f(X) 是 列表理解 它会给你一个包含结果的生成器(如果它在
()
内部)或列表(如果它在[]
内部)仅当EXP
对于该X
为 true 时,才对Y
的每个元素评估f(X)
。在您的情况下,如果元素有一些子元素,它将返回一个包含
titles
中每个元素的列表。结尾的
[:-1]
表示列表中除最后一个元素之外的所有内容。The expression
f(X) for X in Y if EXP
is a list comprehension It will give you either a generator (if it's inside()
) or a list (if it's inside[]
) containing the result of evaluatingf(X)
for each element ofY
, by only ifEXP
is true for thatX
.In your case it will return a list containing every element from
titles
if the element has some children.The ending
[:-1]
means, everything from the list apart from the last element.它称为 for 理解表达式。它只是构造一个包含
x
列表中所有标题的列表,当调用findChildren
函数时返回true
。最后的语句从列表中减去最后一个语句。It's called a for comprehension expression. It is simply constructing a list of all titles in the
x
list which returntrue
when thefindChildren
function is called upon them. The final statement substracts the last one from the list.