1. 程式人生 > >python學習第一階段總結

python學習第一階段總結

1、字串切片的索引是可正,可負數

例子:

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

有個辦法可以很容易地記住切片的工作方式:切片時的索引是在兩個字元 之間 。左邊第一個字元的索引為 0,而長度為 n 的字串其最後一個字元的右界索引為 n

2、迴圈  是 縮排 的:縮排是 Python 組織語句的方法。Python (還)不提供整合的行編輯功能,所以你要為每一個縮排行輸入 TAB 或空格。

實踐中建議你找個文字編輯來錄入複雜的 Python 程式,大多數文字編輯器提供自動縮排。互動式錄入複合語句時,必須在最後輸入一個空行來標識結束(因為直譯器沒辦法猜測你輸入的哪一行是最後一行),需要 注意的是同一個語句塊中的每一行必須縮排同樣數量的空白。

3、因為 ** 的優先順序高於 -,所以 -3**2 將解釋為 -(3**2) 且結果為 -9。為了避免這點並得到 9,你可以使用 (-3)**2

4、與其它語言不同,特殊字元例如 \n 在單引號('...')和雙引號("...")中具有相同的含義。兩者唯一的區別是在單引號中,你不需要轉義 " (但你必須轉義 \' ),反之亦然。

5、可能會有零到多個 

elif 部分,else 是可選的。關鍵字 ‘elif’ 是 ’else if’ 的縮寫,這個可以有效地避免過深的縮排。if … elif … elif … 序列用於替代其它語言中的 switch 或 case 語句。

6、把列表當作堆疊使用

列表方法使得列表可以很方便的做為一個堆疊來使用,堆疊作為特定的資料結構,最先進入的元素最後一個被釋放(後進先出)。用 append() 方法可以把一個元素新增到堆疊頂。用不指定索引的 pop() 方法可以把一個元素從堆疊頂釋放出來。例如:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

7、把列表當作佇列使用

你也可以把列表當做佇列使用,佇列作為特定的資料結構,最先進入的元素最先釋放(先進先出)。不過,列表這樣用效率不高。相對來說從列表末尾新增和彈出很快;在頭部插入和彈出很慢(因為,為了一個元素,要移動整個列表中的所有元素)。

要實現佇列,使用 collections.deque,它為在首尾兩端快速插入和刪除而設計。例如:

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
'Eric'
>>> queue.popleft()                 # The second to arrive now leaves
'John'
>>> queue                           # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

8、列表推導式

列表推導式由包含一個表示式的括號組成,表示式後面跟隨一個 for 子句,之後可以有零或多個 for或 if 子句。結果是一個列表,由表示式依據其後面的 for 和 if 子句上下文計算而來的結果構成。

例如,如下的列表推導式結合兩個列表的元素,如果元素之間不相等的話:

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

等同於:

值得注意的是在上面兩個方法中的 for 和 if 語句的順序。

如果想要得到一個元組(例如,上面例子中的 (x, y)),必須要加上括號:

9、 集合

Python 還包含了一個數據型別 —— set (集合)。集合是一個無序不重複元素的集。基本功能包括關係測試和消除重複元素。集合物件還支援 union(聯合),intersection(交),difference(差)和 sysmmetric difference(對稱差集)等數學運算。

大括號或 set() 函式可以用來建立集合。注意:想要建立空集合,你必須使用 set() 而不是 {}。後者用於建立空字典,我們在下一節中介紹的一種資料結構。

以下是一個簡單的演示:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # fast membership testing
True
>>> 'crabgrass' in basket
False

>>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b                              # letters in either a or b
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # letters in both a and b
{'a', 'c'}
>>> a ^ b                              # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}

類似 列表推導式,這裡有一種集合推導式語法:

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

10、 深入條件控制

while 和 if 語句中使用的條件不僅可以使用比較,而且可以包含任意的操作。

比較操作符 in 和 not in 稽核值是否在一個區間之內。操作符 is 和 is not 比較兩個物件是否相同;這隻和諸如列表這樣的可變物件有關。所有的比較操作符具有相同的優先順序,低於所有的數值操作。

比較操作可以傳遞。例如 a < b == c 稽核是否 a 小於 b 並且 b 等於 c

比較操作可以通過邏輯操作符 and 和 or 組合,比較的結果可以用 not 來取反義。這些操作符的優先順序又低於比較操作符,在它們之中,not 具有最高的優先順序, or 優先順序最低,所以 A and not B or C 等於 (A and (notB)) or C。當然,括號也可以用於比較表示式。

邏輯操作符 and 和 or 也稱作短路操作符:它們的引數從左向右解析,一旦結果可以確定就停止。例如,如果 A 和 C 為真而 B 為假, A and B and C 不會解析 C。作用於一個普通的非邏輯值時,短路操作符的返回值通常是最後一個變數。

可以把比較或其它邏輯表示式的返回值賦給一個變數,例如:

>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'

需要注意的是 Python 與 C 不同,在表示式內部不能賦值。C 程式設計師經常對此抱怨,不過它避免了一類在 C 程式中司空見慣的錯誤:想要在解析式中使 == 時誤用了 = 操作符。