Day 05 串列(list)、Tuple(元組)、字典(dict)、集合(set):我的字典裡沒有放棄,因為我還沒有寫進去(上)
註:本篇文章同步刊載於iT邦幫忙,為鐵人賽之系列文章。https://ithelp.ithome.com.tw/articles/10239342/
先來解答昨天的問題吧!
1. 答案如下:
| |
2. 已經知道bin的前兩位表示是0b,那麼利用slice取第二位以後即可。
| |
3. 只要按照順序就可以接起來囉!
| |
接下來,讓我們介紹幾個比較進階的資料型態:
串列(list)、tuple(元組)、字典(dict)、集合(set)
首先是串列和tuple,
由於Tuple的稱呼(元組)翻法實在相對比較少人愛用,
因此習慣上tuple就直接叫做tuple就可以了。
你說到底要念做「禿波」(too-pull)還是「他波」(tub-pull)呢?
Guido自己講說他都隨便念沒有關系,
不過我是都念咖死口啦!
我們先講串列的部分,
所謂的串列,就是一連串的元素(單一的資料)放進一個表裡面的東西。
這個表可以沒有任何元素,也可以有很多個元素,其數量是可以被改變的。
要做出一個串列,可以使用list(),或者一組中括號[]來表示,
當然,也可以在當中用逗號分隔每個元素並在開始時直接置入:
| |
接著,留意到串列中的元素既然沒有限定,那麼元素可以是另一個串列嗎?
當然可以!
| |
接下來是串列常見的一些操作,請務必多加熟練,
我們先簡單敘述一下常見的操作:(以下請將lt開頭的東西當成是list)
lt.append(element) -> 將element接到lt的** 尾巴**。
lt.extend(lt2) -> 將lt2的所有elements** 依序接到lt的尾巴** (相當於** lt+=lt2**)。
lt.insert(index, element) -> 在index處插入element
(原本該位置及其後的元素都往後挪 )。
del lt[index] -> 將index處的element** 刪去**,其他element** 往前遞補**。
lt.remove(name) -> 從lt中** 搜尋符合name的element**,將其** 刪去**,
其他element往前遞補 。
lt.index(name) -> 從lt中** 搜尋符合name的element**,並將其** 索引值回報**。
xx in lt -> 如果** xx這個元素在lt中的話則為True,否則為Flase。
lt.count(name) -> 計算name在lt 出現的次數**。
lt.join(sep) -> 使用join內的間隔** sep**,將lt的元素** 一個一個接起來**。
lt2 = sorted(lt) -> 將lt排序過後(按元素的順序** 由小到大**),存放到lt2。
(lt不會受改變)
lt.sort() -> 將lt於原地排序。
len(lt) -> 取得lt的** 元素個數**。(想成取長度也行)
lt2 = lt.copy()
lt3 = list(lt) -> lt2~lt4都代表** 複製lt的所有元素並 產生新的list**。
lt4 = lt[:]
| |
蠻多的對吧?
盡量不要死記硬背,嘗試多練習不同的操作變化看看呦!
接下來介紹tuple(元組),
tuple可以說是固定版的串列,
一旦決定以後,它本身裡面的元素就無法被單獨修改了!
要使用tuple,我們會用小括號(),當中是空白或用逗號分隔的元素。
要留意的是,無論除非你直接將變數名稱整個指定成別的內容,
否則是無法用像tpl[1] = ‘edit’這樣的東西去修改的!
除此以外,我們也可以用多重指派的方式,
來讓每個元素接取到tuple或list的元素。
| |
由於不能修改的特性,前面提到list的append/extend等方法tuple都沒有;
但是tuple有幾點好處:
- 占用空間較少
- tuple的元素不會不小心被動到
除此之外,tuple後續也可以做為字典的輸入使用,
這點下一篇文章會提到。
其他還有一些特別的特性,之後有機會再提吧!
我們在下半段將介紹另外兩種資料型態:字典(dict)及集合(set)。
那就明天見啦!
工商時間:
抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)
在Python Taiwan的連結第100篇的文章 底下,
公開分享到你的臉書、按讚該篇文章、並留言告訴我說,
「你最喜歡這一整個系列的哪一篇?為什麼?」或
「除了從LeetCode學演算法系列以外,
你還想要看到關於什麼方向的文章?」
超過20則留言的話 (有完成以上步驟的才算),我們就抽一組
「從Leetcode學演算法|進階篇」+「從Leetcode學演算法|面試篇」
課程的免費兌換券進行贈送!
期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)
容筆者工商一下,
「從Leetcode學演算法|進階篇」 開放預購啦!
這次選了40道難度加深的LeetCode題目,
同樣也會細部解說對應的技巧及須要掌握的演算法!
同時這次購買進階篇的話,
額外還加贈**「從Leetcode學演算法|面試篇」** !
當中包含了面試準備須知分享 ,及訪談國內外不同經驗的工程師 ,
讓你不論是想走前端/後端/一般軟工 或者是想找國外的工作 ,
是初學想轉職 還是正在工作 ,都能夠從中得到收穫呦!
有興趣的朋友可以使用下面的早鳥優惠~
「從Leetcode學演算法|進階篇」+「從Leetcode學演算法|面試篇」 :
https://bit.ly/advleetcode
「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠:
https://bit.ly/allleetcode
