python表达式
我是python新手,在阅读BeautifulSoup教程时,我不理解这个我不理解的表达式“[x for x in titles if x.findChildren()][:-1]”?你能解释一下吗python表达式,python,list-comprehension,Python,List Comprehension,我是python新手,在阅读BeautifulSoup教程时,我不理解这个我不理解的表达式“[x for x in titles if x.findChildren()][:-1]”?你能解释一下吗 titles = [x for x in titles if x.findChildren()][:-1] 从[:-1]开始,它提取一个包含除最后一个元素之外的所有元素的列表 >>> a=[1,2,3,4,5] >>> a[:-1] [1, 2, 3, 4]
titles = [x for x in titles if x.findChildren()][:-1]
从[:-1]开始,它提取一个包含除最后一个元素之外的所有元素的列表
>>> a=[1,2,3,4,5]
>>> a[:-1]
[1, 2, 3, 4]
接下来是第一部分,它将列表提供给[:-1](python切片)
这将生成一个包含列表“titles”中所有元素(x)的列表,该列表满足以下条件(对于x.findChildren(),返回True)它被称为for comprehension表达式。它只是在
x
列表中构建一个所有标题的列表,当调用findChildren
函数时,这些标题返回true
。最后一个语句从列表中减去最后一个。这是一个
这相当于:
def f():
items = []
for x in titles:
if x.findChildren():
items.append(x)
return items[:-1]
titles = f()
Python中我最喜欢的特性之一:)表达式f(X)for X in Y如果EXP
是一个表达式,它将为您提供一个生成器(如果它在()
内)或一个列表(如果它在[]
内),其中包含对Y
的每个元素求值的结果,仅当该X
的EXP
为真时,才通过
在您的例子中,如果元素有一些子元素,它将返回一个包含titles
中每个元素的列表
结尾
[:-1]
表示除最后一个元素之外的列表中的所有内容。建议添加到python文档的链接:我只知道它被称为列表理解:。我以前从来没有听说过它叫“表达”。你是从什么语言学会这个用法的?嘎,我的意思是理解和Scala
>>> a=[1,2,3,4,5]
>>> a[:-1]
[1, 2, 3, 4]