logo

Thursday 24th of May 2012

廣告

廣告贊助商

串列(List) PDF 列印 E-mail
作者是 Victor   
週三, 11 二月 2009 21:09

串列(List)物件

Python裡的List物件,它是一種有序的資料結構,而且可以動態新增或是刪除等等操作,如果你有學果其它語言,可以把它想成可以動態新增、刪除等等的陣列,且有一點很重要的請記住,他是可改變的序列(Mutable Sequence),我們在後面的章節裡會提到,我們直接就來介紹它的語法:

[物件1, 物件2, 物件3, .....]

用[]括起來,物件以逗號分開,而存取方式和字串差不多,以下我們用範例介紹如何使用。

# 學生列表
studentList = ['John', 'Merry', 'Tom', 'Victor']

# 因為列表沒有限制裡面放的是何種物件
# 因此List裡放List也是可以的
# 如此一來就是巢狀的結構
nestList = [[1, 2, 3], [4, 5, 6], [7, 8]]

# 存取的方式跟string差不多
# 印出第一個學生,John
print studentList[0]

# List一樣也有切片的存取方式
# 印出0~1的List
print studentList[:2]

# 巢狀存取的方式也一樣
print nestList[0][2]

# 印出List長度
print len(studentList)

# 除此之外,List一樣也有一些物件的方法
# 此方法就是在List最後加上資料
studentList.append('1900')

# 印出List長度
print len(studentList)

# 印出增加後的List
print studentList

可改變的序列物件的操作

List是屬於"可改變的序列"(Mutable Sequence),因此以下操作都可以用在List上,換言之,只要是"可改變的序列",都可以使用以下方法來操作。

而在下表中,如果是以 .方法名稱() 的方式呼叫,可以看到有些參數是用[]括起來,那不是語法的一部份,而是表示那是可以省略不寫的,會有一定的預設值,例如s.index(x[, i[, j]])的i和j可以省略不寫,只寫s.index(x),而一般而言,i和j將會是預設變成整段序列的範圍。

如果不懂什麼是"切片",可以參考切片

Col 01 Col 11
s[i] = x 取代s中第i個元素為x
s[i:j] = t 取代s的切片內容為t序列的內容
del s[i:j] 從s中刪除切片所含的元素
s[i:j:k] = t 取代s的切片內容成為t序列的內容(t序列的長度必須和切片長度一樣)
del s[i:j:k] 從s中刪除切片中所含的元素
s.append(x) 在最後面新增x物件,效果和s[len(s):len(s)] = [x] 一樣
s.extend(x)
在最後面新增x的內容,效果和s[len(s):len(s)] = x 一樣
s.count(x) 回傳s[i] == x在序列裡的個數
s.index(x[, i[, j]]) 回傳在i到j的切片裡,最小的k值滿足s[k] == x
s.insert(i, x) 在索引i前插入x元素,效果和s[i:i] = [x] 一樣
s.pop([i]) 回傳第一個元素,並且將它從序列中刪除
s.remove(x) 刪除在i到j的切片裡,最小的k值滿足s[k] == x,的s[k],效果和del s[s.index(x)] 一樣
s.reverse() 將元素的順序倒過來
s.sort([cmp[, key[, reverse]]]) 將序列內容進行排序

以下我們用簡單的例子來示範如何操作可改變的序列:

設定我們的List
s = [1, 2, 3]

# 在最後面加入4
s.append(4)

# 在最後面加入5, 6
s.extend([5, 6])

# 印出內容
print s

# 取代[4, 5]該段切片成為[3, 2, 7, 6, 8]
s[3:5] = [3, 2, 7, 6, 8]

# 印出內容
print s

# 負值索引規則在此也一樣
# 刪除最後一個
del s[-1]

# 印出內容
print s

# 將順序倒過來
s.reverse()

# 印出內容
print s

# 進行排序
s.sort()

# 印出內容
print s
最近更新在 週三, 11 二月 2009 21:43
 

核心是 Joomla!. Designed by: Free Joomla Theme, whois protect. Valid XHTML and CSS.