list 是 python 中最為基礎的一種資料結構,有點類似小時候 c++ 學過的 array (但是又多了少部分功能)
list 的基本宣告
讓我們用下面的圖片簡單開始:
跟以前學的陣列一樣, index 的編號是由0開始的 BUT!
Python 允許index為負數 跟圖片上一樣,最後一個元素的索引值是 -1, 倒數第二個索引值為 -2, 以此類推~
我們可以利用 slice 的功能,從 list 之中擷取一些我們需要的片段。
[i:j]
這個片段表示從 i 到 j-1 的所有元素
誒…那個如果沒有設定開頭i怎麼辦:cold_sweat:
不用緊張~那當然就直接從頭開始取出片段嘍~ :smiley:
順帶一提,我們也可以用設定第三個參數 k 來指定間隔[i:j:k]
表示從 i 開始每隔 k 取出一個元素
再來一段小練習
跟上面無關但是你們之後解題會用到
利用這種方式可以將list裡面的元素全部轉為整數型態
當然還有更酷的,我們可以利用map來轉換list內部元素的型態~
比較一下結果:
暖身題 (slice):zap:
請問如何利用slice將list進行reversal呢?
敢給我用reverse()給我試試看^^
【樣例輸入】
1 2 3 4 5 6 7
【樣例輸出】
[7, 6, 5, 4, 3, 2, 1]
要怎麼知道list裡面有沒有-1這個元素?
python 裡面的in
可以滿足你的願望~
print(-1 in [1,2,3])
同時,它也可以用來走訪整個列表~
利用關鍵字item的走訪
小練習1 (list):zap:
a065 Jumping Mario
:warning: 請用list來實現,output可能有點小問題要注意
基本運算範例(1)
基本運算範例(2)
len()
: 可以用來看list的長度str()
: 將list轉為字串sum()
: 計算內部元素和sorted()
: 會回傳排序好的list,但不會動到原本listsort()
: 會直接對內部元素進行排序reversed()
: 反轉listlistname.append(element)
:用於在list尾巴追加元素
listname.extend(seq)
:直接在list尾巴加入另一個list(另一組數字)
listname.count(obj)
: 計算某元素的出現次數
函式範例
皇帝企鵝 | 國王企鵝 | 跳岩企鵝 | 阿德利企鵝 |
---|---|---|---|
就是大家以前學的二(多)維陣列不解釋
二維的基本宣告
:question: 誒那二維空列表要怎麼設定啊?跟下一題超級有關!
請大家看以下面兩種宣告:
如果這時候加入
c[0][0]=77
想一想會發生什麼事情?
小練習2 (二維練習):zap:
完成 3X3 矩陣和 3X2 整數矩陣的乘法,輸出結果矩陣。
範例:
第一個矩陣3X3
3 2 1
5 6 7
2 4 6
第二個矩陣3X2
2 3
3 4
6 2
輸入與輸出格式如下
【樣例輸入】
3 2 1
5 6 7
2 4 6
2 3
3 4
6 2
【樣例輸出】
18 19
70 53
52 34
操作原理大致上和list差不多
用()來建立Tuple
list轉tuple()
EX:tuple([1,2,3])
=>(1,2,3)
tuple 的基本宣告
tuple 基本運算
:bulb:如果 function 需要回傳多個數值, 此時 tuple 就會非常方便~
用 tuple 回傳數值
len(tuple)
:回傳tuple長度max(tuple)
:回傳tuple中的最大值:bulb: 簡單來說 tuple 跟 list 的操作方式重疊度真的很高~只要不涉及內容刪改, tuple 基本上都可以用, 大家有時間可以玩玩看~^^
小練習3 (tuple):zap:
隨意輸入一串數字,如:nums = [2, 7, 11, 15, 1, 8, 6 ,10]
請找到任意相加為9的元素集合,如:[(2, 7), (1, 8)]
【樣例輸入】
1 2 3 4 5 6 7 8 9 0 10 -1
【樣例輸出】
[(1, 8), (2, 7), (3, 6), (4, 5), (9, 0), (10, -1)]
另一種基本的資料結構,它包含了鍵值( key ) 以及對應的值( value ),讓我們可以快速選出某個key對應的value (我一直不能明白為什麼它叫字典)
我們利用{}來建立Dictionary
dictionary={'key1':'value1','key2':'value2',...,'keyn':'value n'}
dict的基本宣告
dict小練習 #key為文字的字典
:bulb: key的值也可以是tuple喔~
dict1.update(dict2)
:將一個字典的鍵與值複製到另一個,如果存在鍵相同,則以新傳入的值會蓋掉原本的值dict.get('key')
:回傳字典中該鍵的值dict.keys()
:回傳字典中所有的鍵dict.values()
:回傳字典中所有的值dict.items()
:回傳字典中所有的鍵值對'key' in dict
:確認鍵是否存在字典中,回傳一個布林值del dict['key']
:刪除字典中該鍵與值dict.clear()
:清除字典所有內容小練習4 (dictionary):zap:
讓我們來算算麥當勞餐點的熱量吧~
如果今天選擇只有大麥克、中薯、可樂、一份(四塊)麥克雞塊。請計算餐點熱量。
【呈現方式(截圖)】
小提示:
:point_right:今天的解答