Python 基礎 —— 循環技術

    簡單談談 Python 中容器的遍歷和一下小技巧。

1、遍歷單個容器
     下面代碼遍歷一個 List 結構,同樣適用於 Tuple、Set 結構類型
>>> x = [1, 2, 3, 'p' , 'y']
>>> for v in x:
...     print(x)
...
1
2
3
p
y

     遍歷字典 Dict 結構也是一樣的方法,注意區分 Key-Value
>>> y = {'a':11, 'b':22}
>>> y
{'b': 22, 'a': 11}
>>> for v in y:
...     print(v)
...
b
a
>>> for v in y.keys():
...     print(v)
...
b
a
>>> for v in y.values():
...     print(v)
...
22
11
>>> for v in y.items():
...     print(v)
...
('b', 22)
('a', 11)

2、同時遍歷多個容器
     藉助 zip() 函數可以將多個容器集中在一起同時遍歷,對於某些場合十分有效,zip() 是 Python 的內建函數,可以隨時使用。
>>> x
[1, 2, 3]
>>> y
{'c', 'b', 'a'}
>>> for i, j in zip(x, y):  # 用i,j分別遍歷容器x和y中的元素,一旦其中某個容器遍歷結束循環終止。
...     print(i, j)
...
1 c
2 b
3 a

>>> z = (5, 6, 7)
>>> for i,j,k in zip(x,y,z):     # 同時遍歷三個容器
...     print(i, j, k)
...
1 c 5
2 b 6
3 a 7

3、循環技巧
     利用 Python 內建函數 reversed() sorted() set() enumerate() 函數可以實現一些實用的技巧。

獲取 1-10的逆序序列
>>> for i in reversed(range(10)):
...     print(i+1, end = ' ')
...
10 9 8 7 6 5 4 3 2 1

獲取有序的字符序列
>>> for c in sorted('hello world'):
...     print(c, end = ' ')
...
  d e h l l l o o r w

去除重複數據
>>> for x in set([1,1,2,2,2,3,3]):
...     print(x, end = ' ')
...
1 2 3


4、遍歷技巧

    遍歷矩陣是常見的操作,包括逐行遍歷和逐列遍歷,下面是一個二維矩陣的遍歷:

>>> x = [[1,2,3], [4,5,6], [7,8,9]]

直接訪問矩陣元素

>>> for row in x:
...     for e in row:
...             print(e, end=' ')
...
1 2 3 4 5 6 7 8 9

根據索引訪問

>>> for i in range(len(x)):
...     for j in range(len(x[0])):
...             print(x[i][j], end=' ')
...
1 2 3 4 5 6 7 8 9 >>>


5、注意事項
     在循環遍歷某個容器的同時,如果需要修改容器,最好不要直接在原始容器上進行修改,否則,會發生不可預料的結果。一個好的方法是在遍歷容器前先拷貝一份原始數據,然後在這份拷貝的數據中進行遍歷,需要修改時,直接修改原始容器中的數據,這樣可以保證你當前正在遍歷的容器與你最初所見相同。
     使用 List 容器的 [:] 操作,該操作會返回一份當前容器的副本。
>>> word = ['a', 'b', 'c']
>>> for v in word[:]:
...     word.append('q')
...
>>> word

['a', 'b', 'c', 'q', 'q', 'q']

參考:

[1] Python3.4 幫助文檔 https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences

發佈了50 篇原創文章 · 獲贊 27 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章