5. 陣列 (字串、串列、元組)

在Python中,陣列大致分為3種形式:

  • 字串【str】

  • 串列【list】:可變動陣列(可簡單刪改內容)

  • 元組【tuple】:不可變動陣列(無法簡單刪改內容)

I. 陣列共通的概念

A. 何謂陣列

陣列其實就是由一串相連在一起的變數所構成

  • 陣列需要取名稱

  • 陣列中的每一格都有專屬編號(索引)

  • 陣列索引值由0開始

B. 為何需要陣列

之前我們所學的資料儲存方式都是利用變數 每當我們需要一個變數我們都得宣告一次 但倘若哪天我們有上千上萬筆資料空間需求時呢? 除了要大量宣告變數外,變數命名也是非常令人頭疼的事 (例如:a1 = 0, a2 = -2, .... , a100 = 10) 是不是很容易命名到手軟呢~ 這時候若能利用陣列來儲存,那就能避免大量變數命名的痛苦了

C. 陣列的宣告與賦值

字串

串列

空串列

被賦值的串列

讀取一行多筆資料進串列中

將字串改為串列

元組

D. 取陣列中的值

陣列的存取方式都是透過[]

E. 計算陣列長度

使用len()

triangle-exclamation

F. 陣列切片(Slicing)

字串切片

:做切片

串列切片

元組切片

【例題】

下方是某首歌曲中的一小段歌詞

別逼一個最愛你的人 即興表演 什麼時候我們開始 沒有了底線 順著別人的謊言 被動就不顯得可憐

請擷取歌詞中的最後一句

G. 更改陣列中的值

字串

更改字串中特定位置的值

將字串裡的所有某子字串全改為另個子字串

使用replace()

錯誤方式

triangle-exclamation

串列

元組

無法直接改動元組內容的值

間接改動元組內容的值(先轉為list變動完後再轉回tuple)

H. 陣列中的子陣列

使用index()

字串

串列

元組

使用find()

串列與元組均無法使用find(),而find()index()最大差異在於:當找不到希望的子陣列時,會回傳-1而非ValueError

判斷某子陣列是否有在某陣列中

使用 innot in

字串

串列

元組

I. 陣列搭配迴圈

字串

串列

元組

J. 陣列變字串

使用join()

字串每隔間插入新字串

串列每隔間插入新字串

元組每隔間插入新字串

K. 陣列的合併

字串

使用+

串列

circle-check

使用+

使用extend()

元組

使用+

L. 計算陣列中某物件出現次數

使用count()

字串

串列

元組

M. 加物件進陣列中

字串

串列

使用append()加物件至串列最末一個位置

使用insert()加物件至串列中特定位置

利用+=方式

在串列中加入子串列(形成多維串列)

元組

元組為不可變動陣列,不得隨意增加物件

N. 移除陣列或其內容

字串

直接使用+重組字串

使用replace()

串列

使用remove()移除串列中指定物件】

使用pop()移除串列中最後一個物件

使用pop()移除串列中指定索引值的物件

使用del移除串列中指定索引值的物件

使用del移除整個串列

使用clear()清空整個串列

使用del清空整個串列

元組

元組不得直接刪除陣列中內容

O. 陣列中最大值、最小值、總和

在電腦中,任何字元都有個專屬的編碼,例如:ASCII、Unicode、UTF-8 ... 等

字串

串列

下方為補充

元組

下方為補充

II. 字串(str)專屬用法

A. 英文字母大小寫轉換

使用lower()upper()

B. 字串與變數或數字串接

也可以將要放的地方做編號(從0開始)

C. 格式化數字

格式化數字【放在{}中】有很多種類,在此只舉一些較常用的

輸入值

格式

輸出

解釋

3.1415926

{:.2f}

3.14

.2表示保留小數點後2位(4捨5入) f表示float(小數)

13

{:x>5d}

xxx13

x表示用x字元填補 >表示填補左方(向右對齊) d表示decimal(10進位數字) 5d表示格式寬度為5個字元

13

{:#<5d}

13###

#表示用#填補 <表示填補右方(向左對齊) 5d表示格式寬度為5個字元

5

{:!^5d}

!!5!!

!表示用!填補 ^表示置中對齊

A

{0:a^5}

aaAaa

0表示此{}的編號 5後面什麼都不放代表字串格式

A

{name:a^5}

aaAaa

name表示此{}的名稱 5後面什麼都不放代表字串格式

III. 串列 (list)專屬用法

A. 串列複製【補充】

triangle-exclamation

方法一

方法二

深度複製【補充】

使用copy()複製多維度的串列會遇到的問題

使用deepcopy()可以複製多維度的串列【需要import copy】

B. 排序串列中的物件

由小至大排列

由大至小排列

C. enumerate【補充】

enumerate()可將串列轉為元組型態的(數值+索引值)

D. 多維度串列

二維串列的表示方式

三維串列的表示方式

二維串列的創造

二維串列的長度

二維串列的存取

多維串列的複製【補充】

使用deepcopy()【需要import copy】

IV. 元組 (tuple)專屬用法

A. 為何需要tuple?

有些程式是需要存取陣列中固定某格當中的值,這時若用List來儲存可能會不小心更動到該格的數值進而影響結果,這時使用Tuple就能夠避免這類問題發生,因為Tuple是不可被變動的

V. 學習單

VI. 附檔

A. 提示程式碼

B. 文章

file-download
2KB
file-download
887B
file-download
2KB

壬戌之秋,七月既望,蘇子與客泛舟遊於赤壁之下。清風徐來,水波不興。舉酒

屬客,誦明月之詩,歌窈窕之章。少焉,月出於東山之上,徘徊於斗牛之間。白

露橫江,水光接天。縱一葦之所如,凌萬頃之茫然。浩浩乎如馮虛御風,而不知

其所止;飄飄乎如遺世獨立,羽化而登仙。 於是飲酒樂甚,扣舷而歌之。歌曰:

“桂棹兮蘭槳,擊空明兮溯流光。渺渺兮予懷,望美人兮天一方。”客有吹洞簫

者,倚歌而和之。其聲嗚嗚然,如怨如慕,如泣如訴;餘音嫋嫋,不絕如縷。舞

幽壑之潛蛟,泣孤舟之嫠婦。 蘇子愀然,正襟危坐,而問客曰:“何爲其然也?”

客曰:“‘月明星稀,烏鵲南飛。’此非曹孟德之詩乎?西望夏口,東望武昌,山川

相繆,鬱乎蒼蒼,此非孟德之困於周郎者乎?方其破荊州,下江陵,順流而東

也,舳艫千里,旌旗蔽空,釃酒臨江,橫槊賦詩,固一世之雄也,而今安在哉?

況吾與子漁樵於江渚之上,侶魚蝦而友麋鹿,駕一葉之扁舟,舉匏樽以相屬。寄

蜉蝣於天地,渺滄海之一粟。哀吾生之須臾,羨長 江之無窮。挾飛仙以遨遊,

抱明月而長終。知不可乎驟得,託遺響於悲風。” 蘇子曰:“客亦知夫水與月乎?

逝者如斯,而未嘗往也;盈虛者如彼,而卒莫消長也。蓋將自其變者而觀之,則

天地曾不能以一瞬;自其不變者而觀之,則物與我皆無盡也,而又何羨乎!且夫

天地之間,物各有主,苟非吾之所有,雖一毫而莫取。惟江上之清風,與山間之

明月,耳得之而爲聲,目遇之而成色,取之無禁,用之不竭。是造物者之無盡藏

也,而吾與子之所共適。”(共適 一作:共食) 客喜而笑,洗盞更酌。餚核既盡,

杯盤狼籍。相與枕藉乎舟中,不知東方之既白。

Last updated