1. 程式人生 > >廖雪峰python3複習總結——day11-1

廖雪峰python3複習總結——day11-1

1、itertools,提供了非常有用的用於操作迭代物件的函式。

幾個“無限”迭代器count()、cycle()、repeat()

通常我們會通過takewhile()等函式根據條件判斷來截取出一個有限的序列:

>>> natuals = itertools.count(1)
>>> ns = itertools.takewhile(lambda x: x <= 10, natuals)
>>> list(ns)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

chain()可以把一組迭代物件串聯起來,形成一個更大的迭代器;groupby()

把迭代器中相鄰的重複元素挑出來放在一起。

練習:

def pi(N):

    ' 計算pi的值 '
    # step 1: 建立一個奇數序列: 1, 3, 5, 7, 9, ...

    # step 2: 取該序列的前N項: 1, 3, 5, 7, 9, ..., 2*N-1.

    # step 3: 新增正負符號並用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ...

    # step 4: 求和:


    na = itertools.count(1, 2)
    ns = list(itertools.takewhile(lambda x: x <2*N, na))
    sum=0
    for i in ns:
        if i%4==1:
            sum=sum+4/i
        else:
            sum=sum-4/i
    return sum

@contextlib:裝飾器有助於上下文管理。上下文管理器是:有一個特殊的語句塊,在執行這個語句塊之前需要先執行一些準備動作;當語句塊執行完成後,需要繼續執行一些收尾動作。 

urllib:提供了一系列用於操作URL的功能。urllib提供的功能就是利用程式去執行各種HTTP請求。如果要模擬瀏覽器完成特定功能,需要把請求偽裝成瀏覽器。偽裝的方法是先監控瀏覽器發出的請求,再根據瀏覽器的請求頭來偽裝,User-Agent頭就是用來標識瀏覽器的。

XML:操作XML有兩種方法:DOM和SAX。DOM會把整個XML讀入記憶體,解析為樹,因此佔用記憶體大,解析慢,優點是可以任意遍歷樹的節點。SAX是流模式,邊讀邊解析,佔用記憶體小,解析快,缺點是我們需要自己處理事件。

正常情況下,優先考慮SAX,因為DOM實在太佔記憶體。

利用HTMLParser,可以把網頁中的文字、影象等解析出來