Python學習筆記——(2)Python中的遍歷

1 概述

  • Python中最常用的遍歷是基於for循環的遍歷方式,但是這個forc++中的for語句的使用有些差別
  • 另外一種遍歷方式是基於while循環的遍歷

2 基於for循環的遍歷

2.1 for in語句

  • 該語句相比於c/c++中的for語句,性能有所下降,但是其更容易編寫且功能更加強大
  • 下面展示了幾種主要數據結構的遍歷
>>> print(a,b,c)
{'123', '456'} [1, 2, 3, 4] (1, 2, 3, 4, [1, 3, 2, 1])
>>> for i in a:
...     print(i)
...     
123
456
>>> for i in b:
...     print(i)
...     
1
2
3
4
>>> for i in c:
...     print(i)
...         
1
2
3
4
[1, 3, 2, 1]

2.2 遍歷元素的同時,對索引進行遍歷

  • Python中引入enumerate對索引(index)進行遍歷,具體的使用方法如下:
>>> b
[1, 2, 3, 4]
>>> for i, k in enumerate(b):
...     print('id=', i, 'value=', k)
...     
id= 0 value= 1
id= 1 value= 2
id= 2 value= 3
id= 3 value= 4

2.3 對字典(dict)鍵值對的遍歷

  • for語句中的變量可以存在多個,這尤其體現在對字典的遍歷中。
>>> d
{1: 'a', 2: 'b', 'c': 3}
>>> for k in d:
...     print(k)
...     
1
2
c
>>> for k, v in d.items():  # 記得要加items()
...     print(k,':', v)
...     
1 : a
2 : b
c : 3
  • 當加入enumerate對索引頁遍歷的時候,要注意在k,v兩邊加小括號。因爲enumerate傳回的參數有兩個:索引和元素,所以如果for循環的變量寫作i, k, v時,會報參數過多的錯誤。
>>> for i, (k, v) in enumerate(d.items()):
...     print(i,k,v)
...     
0 1 a
1 2 b
2 c 3

3 基於while循環的遍歷

  • while循環通常用於複雜條件的循環
>>> i, n, a, b = 0, 10, 1, 1
>>> while i < n:
...     print(a, end = ',' if i < n-1 else '\n')
...     a, b, i = b, a+b, i+1
...     
1,1,2,3,5,8,13,21,34,55
  • 上面的例子是快速生成一個斐波那契數列
  • 注意print後面一行的賦值語句,會首先對等號右側的表達式進行計算,然後將計算結果隱式封裝在一個元組(tuple)中,分別賦值給等號左側的三個變量。

4 構造數據時的隱式遍歷

  • 相對於顯式遍歷,隱式遍歷雖然沒有明確的調用for語句或while語句,但是仍然會執行遍歷操作。

4.1 顯式遍歷和隱式遍歷

>>> a = range(1, 11)
>>> a
range(1, 11)
>>> a_set = set(a)  # 隱式遍歷
>>> a_set
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}    
>>> for i in a:  # 顯式遍歷
...     print(i)
...     
1
2
3
4
5
6
7
8
9
10

4.2 隱式遍歷與非遍歷

  • 由於隱式遍歷的存在,可能會出現意料之外的情況,如下:
>>> a = "This is a test string."
>>> a_set_1 = set(a)  # 隱式遍歷
>>> a_set_2 = {a}  # 非遍歷
>>> a_set_1, a_set_2
({'s', 'i', 'e', 't', '.', 'T', ' ', 'n', 'g', 'h', 'r', 'a'}, {'This is a test string.'})

下一小節:Python中的邏輯運算與數據過濾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章