我是python中的新成员,在阅读BeautifulSoup教程时,我并不理解这个表达式“[x for x.findChildren()] [: - 1]理解?你能解释一下吗?python表达式
titles = [x for x in titles if x.findChildren()][:-1]
我是python中的新成员,在阅读BeautifulSoup教程时,我并不理解这个表达式“[x for x.findChildren()] [: - 1]理解?你能解释一下吗?python表达式
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切片)
[x for x in titles if x.findChildren()]
此生成包含在列表中的“所有元素(x)的列表标题“,满足条件(对于x.findChildren()返回True)
它被称为理解表达式。它只是构建了x
列表中所有标题的列表,当调用findChildren
函数时,它将返回true
。最后的声明将最后一个从列表中删除。
这是一个list comprehension。
这几乎等同于:
def f():
items = []
for x in titles:
if x.findChildren():
items.append(x)
return items[:-1]
titles = f()
一个Python中我最喜欢的功能:)
建议添加一个链接到python文档:http://docs.python.org/tutorial/datastructures.html#list-comprehensions – 2010-09-03 00:05:14
表达f(X) for X in Y if EXP
是list comprehension它会给你要么发电机(如果是内部()
)或列表(如果它在[]
之内),其包含Y
的每个元素的评估f(X)
的结果,仅当EXP
对于该X
为真。
在你的情况下,如果元素有一些子元素,它将返回一个包含titles
中每个元素的列表。
结尾[:-1]
表示除了最后一个元素之外的所有内容。
我只知道它被称为list comprehension:http://docs.python.org/tutorial/datastructures.html#list-comprehensions。我从来没有听说过它称之为“表达”。你从哪种语言中选择了这种用法? – 2010-09-03 00:06:40
gah,我的意思是理解和斯卡拉 – wheaties 2010-09-03 00:08:17