Python可以這樣玩(4):元組字典與集合
元組與生成器推導式 元組也是 Python 一種重要的序列結構,從形式而言,元組的所有元素放在一對小括號中,元素之間以逗號分隔。如下: >>> x = (1,2,3) >>> x (1, 2, 3) >>> type(x) <class 'tuple'> >>> x = (3) >>> x 3 >>> type(x) <class 'int'> >>> x = (3,) >>> x (3,) >>> type(x) <class 'tuple'> >>> x = () >>> x () >>> tuple(range(5)) (0, 1, 2, 3, 4) >>> 元組屬於不可變序列,與列表不同。而 Python 對原組做了大量最佳化,因此,存取和處理的速度比列表更快。 另外,作為不可變序列,元組與整數、字串一樣,可以當成字典的鍵,有關字典的部分,我們後面說明。 雖然元組是不可變序列,但是如果其內部包含了可變序列,情況就複雜了: >>> x = ([1,2],3) >>> x[0][0] = 5 >>> x ([5, 2], 3) >>> 元組的生成器推導式與列表推導式非常類似,主要的差異在於,生成器推導式的結果是一個生成器物件,而非元組。不像列表推導式生成的就是列表。生成器物件可以依照我們的需求產生元組或是列表,還有一個特性就是生成器推導式會用 __next__() 方法來巡訪元素,而且當巡訪結束之後,就巡訪不到元素了。請看下面的範例: >>> g = ((i + 2)**2 for i in range(10)) >>> g <generator objec