iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 3
0
自我挑戰組

初學者Python的應用實作系列 第 3

DAY 03 認識串列

串列的使用

「串列」是個依照特定順序排放的項目集合所組成,在python中串列是用中括號[ ]來表示,而串列中的個別元素是以逗號來分隔

以下為一個簡單的範例 :

fruits=["apple","banana","grape","pineapple"]
print(fruits)

上面程式碼的第一行是先建立一個裡面有四個元素的fruits串列,第二行是把整個串列印出來,印出結果如下 :

["apple","banana","grape","pineapple"]

如果說只想要存取一個元素來輸出的話,就得寫出串列的名稱並標記它的索引值

索引值是從0開始,不是1,索引值0的意思就是第一個元素,索引值1的意思就是第二個元素,索引值2的意思就是第三個元素...以此類推

範例如下 :

fruits=["apple","banana","grape","pineapple"]
print(fruits[0]) # 這行的意思是印出fruits串列中索引值0的位置,也就是第一個元素

輸出結果 :

apple

另外,索引值也可以是負數,負數的意思是從後面數回來 ! 所以索引值-1的意思是倒數第一個元素,索引值-2的意思是倒數第二個元素,索引值-3的意思是倒署第三個元素...以此類推

範例如下:

fruits=["apple","banana","grape","pineapple"]
print(fruits[-2]) # 這行的意思是印出fruits串列中索引值-2的位置,也就是倒數第二個元素

輸出結果 :

grape

串列的新增、修改和刪除

1. 串列的新增

  • append()方法
    append()方法是從串列尾端新增一個元素進去

範例如下 :

fruits=["apple","banana","grape","pineapple"] # 建立一個fruits串列
print(fruits) # 印出原本的fruits串列
fruits.append("mango") # 新增一個"mango"元素到fruits串列尾端
print(fruits) # 再印出新增元素後的fruits串列

輸出結果 :

["apple","banana","grape","pineapple"]
["apple","banana","grape","pineapple","mango"]
  • insert()方法
    insert()方法是可以在串列的任一位置新增元素,用法是指定插入新元素的索引值位置和值即可

範例如下 :

letters=["a","b","c","d"] # 建立一個letters串列
letters.insert(0,"e") # 將"e"元素插入letters串列中的第一個位置
print(letters) # 印出letters串列

輸出結果 :

["e","a","b","c","d"] 

2. 串列的修改

要修改串列中的某個元素,必須先指定串列名稱和想要修改項目元素的索引值位置,再指定新的值進去即可

範例如下 :

colors=["blue","red","green"] # 建立一個colors串列
print(colors) # 印出原本的colors串列
colors[2]="yellow" # 將colors串列中的第三個元素值更改成"yellow"
print(colors) # 印出修改元素值過後的colors串列

輸出結果 :

["blue","red","green"]
["blue","red","yellow"]

3.串列的刪除

  • del陳述句
    知道元素是在哪一個位置(索引值),就可以使用del陳述句來刪除元素

範例如下 :

colors=["blue","red","green"] # 建立一個colors串列
print(colors) # 印出原本的colors串列
del colors[1] # 刪除colors串列中的第二個元素
print(colors) # 印出刪除元素後的colors串列

輸出結果 :

["blue","red","green"]
["blue","green"]
  • pop()方法
    pop()方法是源自於"堆疊",中文解釋是彈出的意思,將串列想像成堆疊的樣子,而pop()方法就是把堆疊最頂端的東西彈出來,堆疊的最頂端是最後加進去的元素,也就是說pop()方法是刪除串列尾端的項目

範例如下:

colors=["blue","red","green"] # 建立一個colors串列
colors.pop() # 從colors串列尾端彈出一個項目
colors.pop() # 再colors串列尾端彈出一個項目
print(colors) # 印出更改後的colors串列

輸出結果 :

["blue"] # 因為從尾端彈出的兩個元素,所以只剩"blue"

如果只是想要暫時刪除串列中的元素,我們可以將彈出來的值儲存到一個變數中

範例如下 :

colors=["blue","red","green"] # 建立一個colors串列
value=colors.pop() # 將colors串列尾端彈出的一個項目存到value變數中
print(value) # 印出value值

輸出結果 :

green

如果知道元素的索引值,就可以任意pop()出想要的值

範例如下 :

colors=["blue","red","green"] # 建立一個colors串列
value=colors.pop(1) # 將colors串列的第二個元素彈出然後存到value變數中
print(colors) # 印出修改後的串列

輸出結果 :

["blue","green"]
  • remove()方法
    有時候我們不知道元素的索引值是多少但又想要刪除它的時候,我們可以使用remove()方法,它是一個可以依據值來刪除元素的方法

範例如下 :

name=["Mary","John","Leo"] # 建立一個name串列
print(name) # 印出原本的name串列
name.remove("Leo") # 刪除name串列中的"Leo"元素
print(name) # 印出更改後的name串列

輸出結果 :

["Mary","John","Leo"]
["Mary","John"]

如果只是想要暫時刪除串列中的元素,我們可以先定義一個變數來儲存要刪除的值,然後再用remove()刪除它

範例如下 :

name=["Mary","John","Leo"] # 建立一個name串列
value="Leo" #定義變數value是"Leo"
name.remove(value) # 刪除name串列中的"Leo"元素
print(name) # 印出更改後的name串列

輸出結果 :

["Mary","John"]

串列的排序

  • sort()方法
    sort()方法可以讓串列按字母順序排序,但是是永久性的改變排列順序

範例如下 :

letters=["b","c","d","a"] # 建立一個letters串列
letters.sort() # 將letters串列依字母順序進行排列
print(letters) # 印出排列過後的letters串列

輸出結果 :

["a","b","c","d"]

如果想要讓串列依字母相反順序排序的話,要在sort()方法中傳入reverse=True參數,範例如下 :

letters=["b","c","d","a"] # 建立一個letters串列
letters.sort(reverse=True) # 將letters串列進行反序排列
print(letters) # 印出排列過後的letters串列

輸出結果 :

["d","c","b","a"]
  • sorted()方法
    sorted()方法跟sort()方法很像,不過sorted()方法是可以暫時性的改變排列順序,不會影響原串列的排列順序

範例如下 :

letters=["b","c","d","a"] # 建立一個letters串列
print(sorted(letters)) # 印出暫時依字母順序排列的letters串列
print(letters) # 再印出letters串列會發現它還是原本的letters串列

輸出結果 :

["a","b","c","d"]
["b","c","d","a"]

如果想要讓串列依字母相反順序排序的話,要在sorted()方法中傳入reverse=True參數,範例如下 :

letters=["b","c","d","a"] # 建立一個letters串列
print(letters.sorted(reverse=True)) # 印出暫時依字母反序排列的letters串列 
print(letters) # 再印出letters串列會發現它還是原本的letters串列

輸出結果 :

["d","c","b","a"] 
["b","c","d","a"]
  • reverse()方法
    reverse()方法是可以反轉串列原本的順序,但它也是永久性的改變

範例如下 :

letters=["b","c","d","a"] # 建立一個letters串列
letters.reverse() # 把letters串列的順序反轉
print(letters) # 印出反轉後的letters串列

輸出結果 :

["a","d","c","b"]
["b","c","d","a"]

附上排版較優美的
HackMD網址 : https://hackmd.io/onOH2yrYTO-3VRNS2kKEig

今天結束,各位明天見~


資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯


上一篇
DAY 02 變數和簡單的資料型別
下一篇
DAY 04 串列的操作與運用
系列文
初學者Python的應用實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

3
h79919
iT邦新手 5 級 ‧ 2018-10-18 11:30:11

感謝大大的教學,
但其中有一段 pop(1)輸出的結果好像有誤
/images/emoticon/emoticon41.gif

h79919喔喔喔對耶!!感謝您認真看我的文~我已經修正了!!

0
agito_cheong
iT邦新手 5 級 ‧ 2019-02-18 14:58:59

你好,有個地方的範例,我無法重現結果,就是在sort()方法中傳入reverse=True參數的範例那裡.
以下是我的代碼:
letters=["b","c","d","a"]
print(letters.sorted(reverse=True))
print(letters)
以及我的Error 提示
AttributeError Traceback (most recent call last)
in ()
1 letters=["b","c","d","a"]
----> 2 print(letters.sorted(reverse=True))
3 print(letters)

AttributeError: 'list' object has no attribute 'sorted'

我要留言

立即登入留言