python表达式

时间:2010-09-02 23:58:23

标签: python list-comprehension

我是python的新手,在阅读BeautifulSoup教程时,我不明白这个表达“[x for x in titles if x.findChildren()] [: - 1]”我不明白?你能解释一下吗

titles = [x for x in titles if x.findChildren()][:-1]

4 个答案:

答案 0 :(得分:5)

以[:-1]开头,这将提取一个包含除最后一个元素之外的所有元素的列表。

>>> a=[1,2,3,4,5]
>>> a[:-1]
[1, 2, 3, 4]

第一部分是将列表提供给[:-1](在python中切片)

[x for x in titles if x.findChildren()]

这将生成一个列表,其中包含列表“titles”中的所有元素(x),它们满足条件(对于x.findChildren()返回True)

答案 1 :(得分:4)

这是list comprehension

这几乎相当于:

def f():
    items = []
    for x in titles:
        if x.findChildren():
            items.append(x)
    return items[:-1]
titles = f()

我最喜欢的Python功能之一:)

答案 2 :(得分:2)

表达式f(X) for X in Y if EXPlist comprehension它将为您提供一个生成器(如果它在()内)或一个包含结果的列表(如果它在[]内)评估f(X)的每个元素的Y,仅当EXPX时才为{。}}。

在你的情况下,如果元素有一些孩子,它将返回一个包含titles中每个元素的列表。

结尾[:-1]表示列表中除最后一个元素之外的所有内容。

答案 3 :(得分:1)

它被称为理解表达。它只是构建x列表中所有标题的列表,当true函数被调用时,它返回findChildren。最后的陈述从列表中减去最后一个。