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

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

  • 字串【str】

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

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

I. 陣列共通的概念

A. 何謂陣列

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

  • 陣列需要取名稱

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

  • 陣列索引值由0開始

B. 為何需要陣列

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

C. 陣列的宣告與賦值

字串

串列

空串列

被賦值的串列

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

將字串改為串列

元組

D. 取陣列中的值

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

E. 計算陣列長度

使用len()

F. 陣列切片(Slicing)

字串切片

:做切片

串列切片

元組切片

【例題】

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

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

請擷取歌詞中的最後一句

G. 更改陣列中的值

字串

更改字串中特定位置的值

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

使用replace()

錯誤方式

串列

元組

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

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

H. 陣列中的子陣列

使用index()

字串

串列

元組

使用find()

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

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

使用 innot in

字串

串列

元組

I. 陣列搭配迴圈

字串

串列

元組

J. 陣列變字串

使用join()

字串每隔間插入新字串

串列每隔間插入新字串

元組每隔間插入新字串

K. 陣列的合併

字串

使用+

串列

使用+

使用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. 串列複製【補充】

方法一

方法二

深度複製【補充】

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

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

B. 排序串列中的物件

由小至大排列

由大至小排列

C. enumerate【補充】

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

D. 多維度串列

二維串列的表示方式

三維串列的表示方式

二維串列的創造

二維串列的長度

二維串列的存取

多維串列的複製【補充】

使用deepcopy()【需要import copy】

IV. 元組 (tuple)專屬用法

A. 為何需要tuple?

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

V. 學習單

VI. 附檔

A. 提示程式碼

B. 文章

887B
Open

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Last updated

Was this helpful?