今天鐵人競賽第4天,之前介紹了Python的基本資料型別,Boolean、Int、Float、String。接下來要來介紹序列結構(list、tuple、字典),用來表達一系列的項目。

list(串列)

串列:由零或多個元素組成的,以「,」逗號分隔,並且放在 [] 裡面。
語法:[element1,element2.....]
以下示範建立基本的串列結構,和如何取值

ironman_list = ["中信兄弟", "統一獅", "lamigo", "富邦悍將"]
print('總冠軍隊伍', ironman_list[0]) 
print('亞軍隊伍', ironman_list[-2])
# 輸出結果
總冠軍隊伍 中信兄弟
亞軍隊伍 lamigo
  • range()
    range:建立整數的串列可用range
    語法: range(起始值 [,終止值, 間格值])
    ironman_list1 = range(5)
    ironman_list2 = range(3,8)
    ironman_list3 = range(3,8,2)
    print(list(ironman_list1))
    print(list(ironman_list2))
    print(list(ironman_list3))
    
    # 輸出結果
    [0, 1, 2, 3, 4]
    [3, 4, 5, 6, 7]
    [3, 5, 7]
    

    進階的串列操作

    解釋:串列重複n次
    語法:[list]*n 串列重複n次

    ironman_list1 = [1,2,3,4,5,6]
    ironman_list2 = ironman_list1*2
    print(ironman_list2)
    
    # 輸出結果
    [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
    解釋:串列取值的方式除了可以使用index取得單一值,也可以使用切片的方式取得多個值
    語法:[n,m] 取出index n~(m-1)的元素

    ironman_list1 = [1,2,3,4,5,6]
    print(list(ironman_list1[2:5]))
    
    # 輸出結果
    [3, 4, 5]
    

    切片取值也可設定間格,語法如下
    語法:[n,m,o] 取出index n~(m-1)的元素,間隔為o

    ironman_list1 = [1,2,3,4,5,6]
    print(list(ironman_list1[1:4:2]))
    
    # 輸出結果
    [2, 4]
    語法:del
    以下示範用切片的方式刪除元素

    ironman_list1 = [1,2,3,4,5,6]
    del ironman_list1[1:4]
    print(list(ironman_list1))
    
    # 輸出結果
    [1, 5, 6]
    

    串列預設函數

  • len():串列元素數目
  • min():串列元素最小值
  • max():串列元素最大值
  • ironman_list1 = [1,2,3,4,5,6]
    print('串列元素數目----->',len(ironman_list1))
    print('串列元素最小值--->',min(ironman_list1))
    print('串列元素最大值--->',max(ironman_list1))
    
    # 輸出結果
    串列元素數目-----> 6
    串列元素最小值---> 1
    串列元素最大值---> 6
    

    如果想取得某個元素在串列中的操作可以使用以下函數

  • index():元素在串列中第一次出現的index
  • count():元素在串列中出現的次數
  • ironman_list1 = [1,2,3,4,3,6,3]
    print('元素3第一次出現的位置------>',ironman_list1.index(3))
    print('元素在串列中出現的次數----->',ironman_list1.count(3))
    
    # 輸出結果
    元素3第一次出現的位置------> 2
    元素在串列中出現的次數-----> 3
    

    在list中加入元素

  • A.append(E):在A串列中加入E元素
  • A.extend(B):在A串列中加入B串列的元素
  • A.insert(B):在A串列中加入B串列
    extend和insert雖然B同樣都是串列,但加入A串列的方式不一樣,可以注意一下
  • ironman_list1 = [1,2,3,4,5,6]
    ironman_list1.append(8)
    print('將8做為元素加在list最後---->',list(ironman_list1))
    ironman_list1 = [1,2,3,4,5,6]
    ironman_list1.extend([8,9])
    print('將[8,9]中的元素加在list最後---->',list(ironman_list1))
    ironman_list1 = [1,2,3,4,5,6]
    ironman_list1.insert(3,8)
    print('在index 3的位置加入元素8---->',list(ironman_list1))
    
    # 輸出結果
    將8做為元素加在list最後----> [1, 2, 3, 4, 5, 6, 8]
    將[8,9]中的元素加在list最後----> [1, 2, 3, 4, 5, 6, 8, 9]
    在index 3的位置加入元素8----> [1, 2, 3, 8, 4, 5, 6]
    

    移除串列的元素

  • pop():取出串列中最後一個元素,並且移除元素
  • A.remove(E):移除A串列中第一個出現E元素
  • ironman_list1 = [1,2,3,4,5,6]
    n = ironman_list1.pop()
    print('取出list最後一個元素並且移除---->',n)
    ironman_list1 = [2,3,4,5,6]
    ironman_list1.remove(3)
    print('移除第一次出現3的元素---->',list(ironman_list1))
    
    # 輸出結果
    取出list最後一個元素並且移除----> 6
    移除第一次出現3的元素----> [2, 4, 5, 6]
    

    其他串列函數操作

  • reverse():反轉串列的順序
  • sort():將串列做排序
  • ironman_list1 = [2,5,6,3,4]
    ironman_list1.reverse()
    print('反轉list順序---->',list(ironman_list1))
    ironman_list1 = [3,2,5,7,4]
    ironman_list1.sort()
    print('將list從小到大排列---->',list(ironman_list1))
    
    # 輸出結果
    反轉list順序----> [4, 3, 6, 5, 2]
    將list從小到大排列----> [2, 3, 4, 5, 7]
    

    優點:執行速度比list快,儲存在Tuple的資料比較安全
    以下示範建立tuple,不同於list使用[],tuple使用()

    ironman_tuple = ("中信兄弟", "統一獅", "lamigo", "富邦悍將")
    print('總冠軍隊伍', ironman_tuple[0]) 
    print('亞軍隊伍', ironman_tuple[-2])
    
    # 輸出結果
    總冠軍隊伍 中信兄弟
    亞軍隊伍 lamigo
    
  • list和tuple互相轉換
    ironman_tuple = ("中信兄弟", "統一獅", "lamigo", "富邦悍將")
    ironman_list = ["brother","lion","monkey","Guardians"]
    tuple_to_list = list(ironman_tuple)
    list_to_tuple = tuple(ironman_list)
    print(list(tuple_to_list))
    print(list(list_to_tuple))
    
    # 輸出結果
    ['中信兄弟', '統一獅', 'lamigo', '富邦悍將']
    ['brother', 'lion', 'monkey', 'Guardians']
    

    Dict(字典):key-map的形式

    list和Tuple都是使用數字取得元素值的方式,如果想要用其他key值來取值就可以使用Dict
    語法:{key1:value1 [,key2:value2,…]}
    以下範例建立一個dict

    ironman_dict = {"team":"中信兄弟","year":"2017","ranking":2}
    print(ironman_dict["team"])
    
    # 輸出結果
    
  • 刪除Dict
    在Dict有三種刪除的動作
  • del A[key]:刪除元素 A[key]
  • A.clear():刪除A Dict所有元素
  • del A:刪除A Dict
  • del ironman_dict["team"]  #刪除元素
    print(ironman_dict) 
    ironman_dict.clear() #刪除所有元素
    print(ironman_dict)
    del ironman_dict # 刪除dict
    
    # 輸出結果
    {'year': '2017', 'ranking': 2}
    
    # 輸出結果
    1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9   
    2*1=2   2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18  
    3*1=3   3*2=6   3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27  
    4*1=4   4*2=8   4*3=12  4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36  
    5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  5*6=30  5*7=35  5*8=40  5*9=45  
    6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  6*7=42  6*8=48  6*9=54  
    7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  7*8=56  7*9=63  
    8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  8*9=72  
    9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  
    
  • break 及 continue
    在迴圈中如果要終止可以使用break、continue
    以下示範break(會直接離開迴圈)
  • for i in range(1,11):
        if(i==6):
            break
        print(i, end=",") 
    
    # 輸出結果,6之後就不執行
    1,2,3,4,5,
    

    現在使用continue看跟break有什麼不同(迴圈執行中途暫時停住不往下執行,而跳到迴圈起始處繼續執行)

     for i in range(1,11):
         if(i==6):
             continue
         print(i, end=",")
    
    # 輸出結果,只有6不會執行,>6還會執行
    1,2,3,4,5,7,8,9,10,
    

    python在for中還可以使用else,用在當for中的if條件一直不滿足時最後會執行else
    下面示範驗證數字是否為質數

    n = 5
    if(n==2):
        print("2是質數!")
    else:
        for i in range(2,n):
            if(n % i == 0):
                print("%d 不是質數!" %n)
                break
        else:
            print("%d是質數!" %n)
    
    # 輸出結果
    5是質數!
    
  • while
  • total = n = 0
    while(n<10):
        n += 1
        total += n
    print(total)
    
    # 輸出結果
                                                

    Hi Summer,

    找到一個可以建議的地方,就是「Tuple(元組)」第一個建立 tuple 的範例:

    ironman_tuple = ("中信兄弟", "統一獅", "lamigo", "富邦悍將")
    print('總冠軍隊伍', ironman_tuple[0]) 
    print('亞軍隊伍', ironman_tuple[-2])
    

    因為我看的時候遲疑了一下,改成上面這樣好像好一點 XD

  •