python表达式

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]

我是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]
接下来是第一部分,它将列表提供给[:-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]