Python 教學
各位讀者們大家好,阿毛分享 Python 資料型態,本章先分享清單(list),元組(tuple)
除了最基本的數字,字元(字串)外,
還包含有清單(list),元組(tuple),字典(Dictionary),集合(set)等四種資料型態,
希望讀者可以藉由程式範例之說明,學習各個資料型態的使用方式以及特性,
以增進讀者對於 Python 的資料型態有更深一層的了解,並且可以充分應用與發揮。
接觸著上一章補充幾個
#1. Python 字元與字串的概念
首先我們來了解到字元(字串)的+與+=
字元(字串)可以透過運算子 + 做結合
#1.1 字元(字串)可以透過運算子 += 做結合,以變更原字元序列
如下範例
str1 = "" # 建立空字元(字串)並命名為 str1 str1 + "abc" # 兩個字元(字串)可以透過運算子 + 做結合 str1 += "ghi" # 兩個字元(字串)可以透過運算子 += 做結合,以變更原字元序列 str1 += "def" # 兩個字元(字串)可以透過運算子 += 做結合,以變更原字元序列 print(str1) |
這邊的練習題一樣各位讀者們可以自己想看看要怎麼去撰寫這個程式喔!
答案阿毛這次放在文章的最後,練習完後可以去看看喔!
練習題: 請撰寫一個程式將使用者輸入的三個字元(字串)資料合併成為一個
#1.2 當使用字元(字串)時,若表示式太長,則可以使用繼續字元 \ 做連結
如下範例
str2 = "abc" + "def" + \ "ghi" + "jkl" x = 1 - 2 * 3 + 4 # 計算數字 x print(x) y = 1 - 2 * \ 3 + 4 # 計算式太長也可以使用繼續字元 \ 做連結 print(y) |
以下我們來看看更多的字元(字串)的使用吧!
雖然說用法都大同小異,但是主要還是能多動手去將程式寫入各位讀者的電腦中,
不僅可以增加打字的速度,也可以更快速的醬Python上手喔!
#1.3 以下介紹各種字元變化使用範例
符號應用
a="abc"+'cde' # 確認單引號與雙引號均為字元(字串)符號,並以+合併為一個字元(字串) b="abc" 'cde' # 不使用 + 符號,亦可將兩個字元(字串)合併為一個字元(字串) c='abc' "cde" # 即使兩個字元(字串)間有空格,還是可以合併為一個字元(字串) d="abc"*3+'\n'+'cde'*2 # 字元(字串)如果需要重複顯示,可以利用 * 符號來達成 print(d) # 執行顯示 d 這個字元(字串)於螢幕上 |
字元(字串)的元素值應用
a = "wc" * 3 + 'tom' * 2 + "jack" # 建立一個字元(字串) print(a[0]) # 字元(字串) a 的第 0 個元素值 print(a[1]) # 字元(字串) a 的第 1 個元素值 print(a[-3]) # 字元(字串) a 的最後一個元素值往前數三個元素值 print(a[50]) # 字元(字串) a 的第 50 個元素值,但超過字元(字串) a 的元素值總量,發生錯誤 print(a[-50]) # 從字元(字串) a 的最後一個元素值往前數 50 個元素值,但超過字元(字串) a 的元素值總量,發生錯誤 |
#1.4 顯示或是取得字元(字串)中的一部分
可以利用 [開始:結束:走幾步] 的方式達到,
其中 開始 是字元(字串)開始的元素值(預設值 0 ),
第一個字元是屬於第 0 個元素值,結束 是字元(字串)結束的元素值
如以下範例
a = "abc" * 3 + 'cde' * 2 + "fgh" # 建立一個字元(字串) a print(a) a[3]='k' # 字元(字串)是屬於不可變動的資料型態,所以,不可以直接變更內容 |
a = "abc" * 3 + 'cde' * 2 + "fgh" # 建立一個字元(字串) a print(a) a.replace('a','w') # 利用方法 replace() 將字元(字串) a 中的字元 'a' 變更為 'w' print(a) a = "abc" * 3 + 'cde' * 2 + "fgh" # 還原原字元(字串) a print(a[0:12]+'ghi') # 取字元(字串) a 的第 0 個到第 11 個元素值並合併字元(字串) 'ghi' print(a[0:10]+'lmn'+a[11:15]) # 取字元(字串) a 的部分字元(字串)資料並合併其他字元(字串) |
a='abc'*3+'cde'*2+'fgh' # 建立一個字元(字串) a print(a[:]) # 利用 [:] 符號顯示字元(字串) a 的所有元素值,這與單獨使用 a 的意思相同 print(a[9:]) # 僅輸入 start 為 9,代表顯示從字元(字串) a 的第 9 個元素值開始到最後 1 個元素值 print(a[:9]) # 僅輸入 end 為 9,代表顯示從字元(字串) a 的第 0 個元素值開始到第 8 個元素值 # 輸入 end 為 15 以及 step 為 3,代表從字元(字串) a 的第 0 個元素值開始 print(a[:15:3]) # 每隔 3 個元素值開始顯示直到第 14 個元素值為止 print(a[-3:]) # 僅輸入 開始 為 -3,代表從字元(字串) a 倒數第 3 個元素值開始到最後 1 個元素值 # 輸入 開始 為 15 以及 end 為 -3,代表從字元(字串) a 的第 15 個元素值開始到 print(a[15:-3]) # 從字元(字串) a 倒數 4 個元素值為止,但兩個部分重疊,所以顯示空字元(字串) print(a[9:-3]) # 從字元(字串) a 的第 9 個元素值開始到倒數第 4 個元素值為止 print(a[-9:-3]) # 從字元(字串) a 倒數第 9 個元素值開始到倒數第 4 個元素值為止 print(a[-1::-1]) # 從字元(字串) a 倒數第 1 個元素值開始往前到第 0 個元素值為止 print(a[::-1]) # 從字元(字串) a 倒數第 1 個元素值開始往前到第 0 個元素值為止 print(a[-20:]) # 僅輸入 開始 為 -20,數字 20 超過字元(字串) a 的長度,所以與 a[:] 相同 print(a[:20]) # 僅輸入 結束 為 20,數字 20 超過字元(字串) a 的長度,所以與 a[:] 相同 |
其他字元(字串)小知識
a = """I am somnebody I am somnebody I am somnebody """ # 利用三個雙引號以連結多行的字元(字串)成為一個字元(字串) print(a) # 利用 print() 函式來執行並顯示字元(字串) a 的結果,換行字元'\n'會動作 |
a = 'I am: a some: body and, I am Learn: for my doctorate' # 建立字元(字串) print(a.split(':')) # 字元(字串) a 以 ':' 為基準進行分割,成為多個字元(字串) print(a.split(',')) # 字元(字串) a 以 ',' 為基準進行分割,成為多個字元(字串) b = a.split() # 以方法 split() 的內定值為基準進行分割,並將資料指定給參數 b print(b) c=','.join(b) # 以',' 為基準進行合併 print('This is a wrong sentence: ', c) # 顯示資料於螢幕上 |
#2. Python 清單(Lists)與元組(Tuples)
Python中,避免過多參數名稱的使用導致在程式撰寫上的困擾,
會使用如清單(Lists)或是元組(Tuples)這兩種資料型態的方式,
而這兩種資料型態的作法類似於其他語言中的陣列(Array),
其索引(Index)的使用方式與字元(字串)相同,
均是從第0個元素值開始,但在其他語言的陣列中,
所有元素值的資料型態必須要相同,
即使是其他程式語言中的陣列使用也是一樣,
但是在 Python 中的清單與元組這兩個資料型態則沒有這個限制,
這個特性可以提供程式撰寫時擁有更大的彈性,
而Python 中的清單資料型態是一個可以儲存資料且有順序概念的一種資料型態
如以下阿毛的示範
a = [] # 利用清單符號 [] 產生空清單 b = list() # 利用方法 list() 產生空清單 five_str=['a','b','c','d','e'] # 產生五個英文字母的清單 five_val=[0, 1, 2, 3, 4] # 產生五個數字的清單 print(five_str) print(five_val) |
練習題: 請使用列舉方式寫下個人名稱,一個字當作一個元素值。
#2.1 Python 清單(Lists)與元組(Tuples) 結合split()函數
split(以xxx為基準) 來分割
如下範例
abc = list('Frank') # 建立一個清單 list(abc) # 將一個清單資料放置於方法 list() 中,不會變更其資料型態 tuple_ex=('Frank','Tom','Jhon','Soul','Four') # 建立一個元組 list(tuple_ex) # 將一個元組資料轉換成一個清單資料 Birthday='10/10/1999' # 您的生日 print(Birthday.split('/')) # 利用 split() 方法並以字元(字串) '/' 為基準分割 National_Day 成為一個清單資料 |
testsite='10/10//1911///' # 日期錯誤的表示方式 print(testsite.split('/')) # 利用 split() 方法以字元(字串) '/' 為基準分割 testsite 成為一個清單資料 print(testsite.split('//')) # 利用 split() 方法以字元(字串) '//' 為基準分割 testsite 成為一個清單資料 print(testsite.split('///')) # 利用 split() 方法以字元(字串) '///' 為基準分割 testsite 成為一個清單資料 |
testlist=[0, 1, 'xyz', 'Amo', 234, 'Bendong'] # 產生一個清單 print(testlist[0]) # 清單 testlist 的第 0 個元素值 print(testlist[3]) # 清單 testlist 的第 3 個元素值 print(testlist[-2]) # 清單 testlist 的第 -2 個元素值 print(testlist[-3]) # 清單 testlist 的第 -3 個元素值 print(testlist[11]) # 清單 testlist 的第 10 個元素值,但testlist僅有六個元素值,所以會產生錯誤 print(testlist[-11]) # 會產生錯誤,理由同上 |
再來就是比較深入的清單與元組的範例囉~
school=['Amo','Brndong'] # 建立一個字元(字串)的清單資料 number=[ 1, 2, 3] # 建立一個數字的清單資料 hybrid=[ 4, 5, 'of', 6, 'Tech'] # 建立一個數字與字元(字串)混合的清單資料 alldata=[ school, number, 'ocean', hybrid, 10] # 上述資料整合為一個清單資料 print(alldata[0]) # 取出清單 alldata 的第 0 個元素值,這個元素值是字元(字串)的清單 print(alldata[1]) # 取出清單 alldata 的第 1 個元素值,這個元素值是數字的清單 print(alldata[-1]) # 將清單 alldata 最後面的元素值取出,這個元素值是數字 10 print(alldata[2]) # 取出清單 alldata 的第 2 個元素值,這個元素值是字元(字串) print(alldata[-2]) # 將清單 alldata 從最後面往前的第 2 個元素值取出 print(alldata[3]) # 取出清單 alldata 的第 3 個元素值,這個元素值是數字與字元(字串)混合的清單 print(alldata[0][0]) # 取出清單 alldata 的第 0 個元素值中的第 0 個元素值 print(alldata[1][2]) # 取出清單 alldata 的第 1 個元素值中的第 2 個元素值 |
brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 建立一個數字與字元序列混合的清單 print(brid[0:3]) # 顯示清單 brid 中索引 0, 1,2 以及 3 的資料 print(brid[::2]) # 顯示清單 brid 的資料,從索引 0 開始往後每隔 2 個索引顯示資料 print(brid[::-2]) # 顯示清單 brid 的資料,從索引 -1 開始往前每隔 2 個索引顯示資料 print(brid[::-1]) # 顯示清單 brid的資料,從最後一個元素值依序往前顯示所有元素值 brid[2]=9 print(brid[2]) # 將清單 brid 中索引 2 的資料由字元序列 'of' 變更為數字 9 brid[1]='yes' print(brid[1]) # 將清單 brid 中索引 1 的資料由數字 5 變更為字元序列 'of' print(brid[:]) |
練習題 :
假設有一個清單的資料為
['啊','毛','便','當','Python','芬','享'],
請更正為
['阿','毛','便','當','Python','分','享']
#2.2 Python append(),pop(),extend(),.insert(),.remove() 使用範例
append() 與extend()如下範例
brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 還原原清單資料 number = 5.0 # 將參數 number 設定為實數 5.0 string = 'school' # 將參數 string 設定為字元(字串) 'school' data=[number, string] # 將參數 number 以及 string 合併為一個清單資料 brid.extend(data) # 利用 extend() 方法在清單資料中新增一筆清單資料 print(brid) # 利用 extend() 方法新增,因此,在清單 data 的兩個元素值會獨立 brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 還原原清單資料 brid+=data # 利用運算子 += 來達到與使用 extend() 方法相同的結果 print(brid) # 利用運算子 += 新增,因此,在清單 data 的兩個元素值會獨立 brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 還原原清單資料 brid.append(data) # 利用 append() 方法在清單資料後面新增一個清單的元素值 print(brid) # 利用 append() 方法做新增,因此,清單 data 的資料會視為一筆資料 brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 還原原清單資料 brid.append([5.0, 'school']) # 不使用參數 data 進行新增,直接使用清單符號 brid.extend([5.0, 'school']) # 不使用參數 data 進行新增,直接使用清單符號 brid+=[5.0, 'school'] # 不使用參數 data 進行新增,直接使用清單符號 |
brid=[7, 8, 'all', 9, 'AmoBendong'] # 建立一個數字與字元(字串)混合的清單 brid.insert(4, 'A MO') # 索引 4 的位置新增資料,後面的資料退後一個索引 print(brid) brid=[4, 5, 'of', 6, 'AmoBendong'] # 還原原清單資料 brid.insert(10, 'A MO') # 在索引 20 的位置新增資料,因超過原清單資料的元素值總數,所以新增在原清單後面 brid.insert(4, [5.0,'A MO']) # 在索引 4 的位置新增一個包含兩元素值的清單資料,該清單資料會成為原清單資料的一個元素值 brid.insert(4, (5.0,'A MO')) # 在索引 4 的位置新增一個包含兩元素值的元組資料,該元組資料會成為原清單資料的一個元素值 print(brid) |
練習題:
假設有一個清單的資料為 ['毛','便','Python','享'],
請使用方法 insert() 讓清單的資料變成 ['阿','毛','便','當','Python','分','享']
brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 建立一個數字與字元(字串)混合的清單 del brid[-2] # 利用 del 指令刪除索引為 -2 的資料 print(brid) del brid[2] # 利用 del 指令刪除索引為 2 的資料 print(brid) brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 還原原清單資料 brid.remove(6) # 利用方法 remove() 刪除數字 6 print(brid) brid.remove('of') # 利用方法 remove() 刪除字元(字串) 'of' print(brid) brid=[ 4, 5, 'of', 6, 'AmoBendong'] # 還原原清單資料 brid.pop(-2) # 利用方法 pop() 刪除索引 -2 的資料,並顯示被刪除的資料 print(brid) brid.pop(2) # 利用方法 pop() 刪除索引 2 的資料,並顯示被刪除的資料 print(brid) brid.pop() # 利用方法 pop() 刪除資料,若沒有指定索引的話,內定值為 -1 print(brid) |
brid=[ 'of', 4, 5, 'of', 6, 'AmoBendong', 6, 'of', 6] # 建立一個清單資料 brid.remove(6) # 利用方法 remove() 刪除數字6,雖然原清單有3個數字6,但會僅刪除左邊起算第一個 print(brid) brid.remove('of') # 利用方法 remove() 刪除字元(字串)'of',雖然原清單有3個,但僅刪除左邊起算第一個 print(brid) brid.remove('Mo') # 刪除的資料不在清單中的話,則會產生錯誤訊息 |
練習題:
若有一個清單資料為 ['阿','毛','愛','便','當','好','Python','分','享'],
請以程式更正為 ['阿','毛','便','當','Python','分','享']
#2.3 Python index(),count(),join(),sorted(),sort() 使用範例
brid=[ 'of', 4, 5, 'of', 6, 'AmoBendong', 6, 'of', 6] # 建立一個清單資料 print(brid.index(6)) # 利用 index() 方法由清單的左邊向右邊找尋小括弧內的資料第一次在清單中出現的索引 print('of' in brid) # 利用 in 指令確認清單 brid 中是否有字元序列 'of' print('of ' in brid) # 利用 in 指令確認清單 brid 中是否有字元序列 'of ' print(5 in brid) # 利用 in 指令確認清單 brid 中是否有數字 5 print(6 in brid) # 利用 in 指令確認清單 brid 中是否有數字 6 (與出現次數無關) print(brid.count(6)) # 利用 count() 方法來計數小括弧內的資料在此清單中出現的次數 print(brid.count(4)) # 利用 count() 方法來計數小括弧內的資料在此清單中出現的次數 print(brid.count('of')) # 利用 count() 方法來計數小括弧內的資料在此清單中出現的次數 |
練習題:
建立一個所有元素值均為字元序列之清單,再由使用者輸入一個字元序列,
並由程式判斷該字元序列是否在清單中?
若在則顯示字元序列 True 於螢幕上,
若不在則顯示字元序列 False 於螢幕上。
brid=[ '4', '5', 'of', '6', 'Tech', '6', 'Ming'] # 建立一個字元(字串)的清單 ','.join(brid) # 利用 join() 方法將小括弧內的清單之個別字元(字串)使用 , 連結成一個字元(字串) '/'.join(brid) # 利用 join() 方法將小括弧內的清單之個別字元(字串)使用 / 連結成一個字元(字串) print(brid) # 經過 join() 方法的動作後,原清單資料不變 data = '/'.join(brid) # 將產生的新字元(字串)指定給新參數 data,原清單資料 brid 不變 a=data.split('/') # 利用 split() 方法將字元(字串)分割,分割的基準是 '/' print(a == brid) # 確認在清單中加入字元(字串)'/'後,再刪除字元(字串)'/',可否還原到原清單資料 print(sorted(brid)) # 利用 sorted() 函式針對清單brid進行遞增排序,原清單資料不變 print(brid) print(sorted(brid, reverse=True)) # 利用 sorted() 函式針對清單 brid 進行遞減排序,原清單資料不變 print(brid) |
brid=[ '4', '5', 'of', '6', 'Amo', '6', 'Bendong'] # 建立一個字元(字串)的清單 sorted(brid) # 利用 sorted() 函式針對清單資料進行遞增排序,原清單資料不變 print(brid) brid.sort() # 利用 sort() 方法針對清單資料進行遞增排序,排序結果將會取代原清單資料 print(brid) brid=[ '4', '5', 'of', '6', 'Amo', '6', 'Bendong'] # 還原原清單資料 sorted(brid, reverse=True) # 針對清單資料進行遞減排序,原清單資料不變 print(brid) brid.sort(reverse=True) # 針對清單資料進行遞減排序,排序結果取代原清單資料 print(brid) |
number=[10.3, -3, 5.2, 9] # 建立一個數字的清單資料,但數字的型態不一致 sorted(number) # 利用 sorted() 函式針對清單資料進行遞增排序,原清單資料不變 print(number) number.sort() # 利用方法 sort() 進行遞增排序,排序後的結果會直接改變原清單資料 print(number) number=[10.3, -3, 5.2, 9] # 還原原清單資料 sorted(number, reverse=True) # 針對清單資料進行遞減排序,原清單資料不變 print(number) number.sort(reverse=True) # 利用方法 sort() 進行遞減排序,排序後的結果會直接改變原清單資料 print(number) |
#Python 練習題 答案
請撰寫一個程式將使用者輸入的三個字元(字串)資料合併成為一個
def str(): str1 = input('請輸入字元') str2 = input('請輸入字元') str3 = input('請輸入字元') c = '' c += str1 c += str2 c += str3 print(c) str() |
請使用列舉方式寫下個人名稱,一個字當作一個元素值。
name = ['王','阿','毛'] print(name) |
練習題 :
假設有一個清單的資料為
['啊','毛','便','當','Python','芬','享'],
請更正為
['阿','毛','便','當','Python','分','享']
sample = ['啊','毛','便','當','Python','芬','享'] sample[0]='阿' sample[-2] = '分' print(sample) |
練習題:
假設有一個清單的資料為 ['毛','便','Python','享'],
請使用方法 insert() 讓清單的資料變成 ['阿','毛','便','當','Python','分','享']
sample = ['毛','便','Python','享'] sample.insert(0,'阿') sample.insert(3,'當') sample.insert(5,'分') print(sample) |
練習題:
若有一個清單資料為 ['阿','毛','愛','便','當','好','Python','分','享'],
請以程式更正為 ['阿','毛','便','當','Python','分','享']
sample=['阿','毛','愛','便','當','好','Python','分','享'] del sample[2] sample.remove('好') print(sample) |
練習題:
建立一個所有元素值均為字元序列之清單,再由使用者輸入一個字元序列,
並由程式判斷該字元序列是否在清單中?
若在則顯示字元序列 True 於螢幕上,
若不在則顯示字元序列 False 於螢幕上。
test = ['x','y','z'] users_input = input('請輸入一個英文字') print (users_input in test) |
各位讀者們,本章就先分享到這邊囉,是不是內容很多很豐富呢?
相信跟著從第一章到現在各位的基礎應該已經打得很厲害了唷,是不是很簡單呢?
還是說還有其他不足的地方或者想學其他的東西可以留言告訴阿毛喔!阿毛會分享各位讀者想知道的內容。
下一課程將分享更多不一樣的函式給各位讀者!
如果喜歡阿毛的內容記得幫阿毛按個讚鼓勵一下!讓阿毛有繼續下去的動力唷~感謝您的觀看
#其他課程連結
Step 1.(安裝Python)連英文都看不懂的人如何簡單學Python呢?
Step 2.簡單 Python 教學 免費學-JupyterNotebook 使用
Step 3.簡單 Python 教學 免費學-算術運算子 教學