我是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