1. 程式人生 > 實用技巧 >Python中的for迴圈:【元組、列表、字典】:遍歷和相互轉化

Python中的for迴圈:【元組、列表、字典】:遍歷和相互轉化

Python for迴圈可以遍歷任何序列的專案,如列表、字串、元組、字典、集合等序列型別。

語法:

for迴圈的語法格式如下:

for iterating_var in sequence:
   statements(s)

流程圖:

animals="dog","cat","pig""bird"
for animal in animals:
      print(animal)#for迴圈中,print需要縮排

執行結果:

dog
cat
pig
bird

可以看到,使用 for 迴圈的過程中,迭代變數會先後被賦值,並代入迴圈體中使用。

Python for迴圈的具體應用:

for 迴圈進行數值迴圈:

在使用 for 迴圈時,最基本的應用就是進行數值迴圈。

比如說,想要實現從 1 到 100 的累加,可以執行如下程式碼:

print("計算 1+2+...+100 的結果為:")#儲存累加結果的變數
result = 0 #逐個獲取從 1 到 100 這些值,並做累加操作
for i in range(101):
    result += i
print(result)

執行結果為:

計算 1+2+...+100 的結果為:
5050

上面程式碼中,使用了 range() 函式,此函式是 Python 內建函式,用於生成一系列連續整數,多用於 for 迴圈中。

for迴圈遍歷列表和元組

當用 for 迴圈遍歷 list 列表或者 tuple 元組時,其迭代變數會先後被賦值為列表或元組中的每個元素並執行一次迴圈體。

下面程式使用 for 迴圈對列表進行了遍歷:

my_list = [1,2,3,4,5]
for ele in my_list:
    print('ele =', ele)

程式執行結果為:

ele = 1
ele = 2
ele = 3
ele = 4
ele = 5

在Python中,for迴圈迭代元組與序列差不多,下面程式使用 for 迴圈對元組進行了遍歷:

my_tuple = tuple("23333")
print(my_tuple)
#
<<< ('2', '3', '3', '3', '3') for value in my_tuple: print(value)

程式執行結果如下:

3
2
3
3
3

注意:因為對於字元型的集合,輸出集合中的元素的時候,不會儲存順序,所以集合中元素的順序通常是沒有定義的,與序列相同for word in words中的word識別符號也是可以隨意更改。

for 迴圈遍歷字典

在使用 for 迴圈遍歷字典時,經常會用到和字典相關的 3 個方法,即 items()、keys() 以及 values(),如果使用 for 迴圈直接遍歷字典,則迭代變數會被先後賦值為每個鍵值對中的鍵。

my_dic = {'python':"1",\
          'shell':"2",\
          'java':"3"}
for ele in my_dic:
    print('ele =', ele)

程式執行結果為:

ele = python
ele = shell
ele = java

直接遍歷字典,和遍歷字典 keys() 方法的返回值是相同的。

迴圈迭代鍵:

d = {'x':1,'y':2,'z':3}
 
for key in d.keys():
    print(key)

除此之外,我們還可以遍歷字典 values()、items() 方法的返回值。例如:

迴圈迭代值:

d = {'x':1,'y':2,'z':3}
 
for value in d.values():
    print(value)
my_dic = {'python':"1",\
          'shell':"2",\
          'java':"3"}
for ele in my_dic.items():
    print('ele =', ele)

d.items方法還可以將鍵-值對作為元組放回,for迴圈的一大好處就是可以在迴圈中使用序列解包

程式執行結果為:

ele = ('python', '1')
ele = ('shell', '2')
ele = ('java', '3')

元組,列表,字典之間的轉換

元組轉換為列表

fruits = ('apple','banana','orange')
 
#元組轉換為列表:
list(fruit)
 
#元組不能直接轉換為字典,附:
#元組轉換為字串:
fruits.__str__()

列表轉換為元組

fruit_list = ['apple','banana','orange']
 
#列表轉換為元組:
tuple(fruit_list)
 
#列表不能直接轉換為字典,附:
#列表轉換為字串:
str(fruit_list)

字典轉換為元組

可以使用函式 tuple() 和 list() 將字典轉換為元組和列表,但要注意的是,這裡的轉換後和之前的元素順序是不同的,因為字典類似於雜湊,列表 類似於連結串列,元組類似於列表只是元素無法改變,所以,要把雜湊轉換為連結串列而順序不變是不可行的。但可以藉助於有序字典OrderedDict,有序字典是字典的子類,它可以記住元素新增的順序,從而得到有序的字典。有序字典這裡就不深入探討,給出普通字典的例子參考,程式碼如下:

fruit_dict = {'apple':1, 'banana':2, 'orange':3}
 
#將字典的key轉換為元組:
tuple(fruit_dict)
#將字典的value轉換為元組:
tuple(fruit_dict.value())
 
#將字典的key轉換為列表:
list(fruit_dict)
#將字典的value轉換為列表:
list(fruit_dict.value())
 
#附:
#將字典轉換為字串:
str(fruit_dict)

字串轉換為元組

要將字串轉換為指定的資料結構,那麼字串就必須符合指定資料結構的格式,並藉助於 eval() 函式

#將字串轉換為元組:
str = "(1,2,3)"
tuple(eval(str))
#將字串轉換為列表:
str = "(1,2,3)"
list(eval(str))
#將字串轉換為字典:
str = "{'a':1 ,'b',2}"
eval(str)