Python提供了四種內置數據結構,可以保存任意對象。他們是:列表(list)、元組(tuple)、字典(Dictionary)、集合(Set)。這些內置數據類型可以在代碼中直接使用,無需先導入(import)。
本文將先介紹: List 和 Tuple,即列表和元組。
List 列表
list是python中使用最廣最頻繁的一種內置數據類型。列表用中括號[ ]表示,裡面可以包含各種數據類型的數據、對象,比如int, string, 甚至嵌套列表。可以在一個列表中能夠存儲混合類型的數據。
List是一種有序的可變的對象集合,可以隨時添加、刪除、修改其中的元素。
這裡,列表並非鏈表,但更類似於其他編程語言中的數組,但它是動態的,可以擴展和收縮,不需要在使用前預知大小。
例如:定義一個叫做weekday的list.
<code>>>> weekday = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] >>> weekday ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] /<code>
跟字符串數據類型類似,列表裡存放的數據可以被索引和切片。
<code>>>> weekday ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] >>> weekday[0] 'Monday' >>> weekday[3] 'Thursday' >>> weekday[4] 'Friday' >>> weekday[5] Traceback (most recent call last): File "", line 1, in weekday[5] IndexError: list index out of range >>> weekday[-1] 'Friday' >>> weekday[-5] 'Monday'/<code>
對list進行切片操作後,返回仍然是一個list, 可以說是原來的list的一個子集。
slicing operation, [start : stop], 冒號必不可少。如不寫開始位置,則默認從第一個元素開始。如不寫結束位置,則默認直到最後一個元素結束。
<code>>>> weekday[:] ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] >>> weekday[1:3] ['Tuesday', 'Wednesday'] >>> weekday[:2] ['Monday', 'Tuesday'] >>> weekday[1:] ['Tuesday', 'Wednesday', 'Thursday', 'Friday'] >>> weekday[-2:] ['Thursday', 'Friday'] >>> weekday[:-3] ['Monday', 'Tuesday']/<code>
List中的元素是可以修改的,比如:
<code>>>> weekday[4] 'Friday' >>> weekday[4]="NULL" >>> weekday ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'NULL'] >>> weekday[4]="Friday" >>> weekday ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']/<code>
>>>help(list),可以看到list支持很多內置的操作/方法,比如:
- 獲取list的長度, len(listName)
- 添加新的元素,listName.append(newElement)
- 刪除元素, listName.remove(element)
- 在指定位置前面插入新的元素, listName.insert(index, newElement)
- 元素反序, listName.reverse()
- 彈出元素, listName.pop(),默認彈出最後一個元素, 也可以指定index, 彈出指定元素。
- 其他: clear, sort, extend, index, count
append和pop類似於stack的"last-in, first out", 所以list完全可以作為stack來用。
<code>>>> weekday ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] >>> weekday.remove("Tuesday") >>> weekday ['Monday', 'Wednesday', 'Thursday', 'Friday'] >>> len(weekday) 4 >>> weekday.append("Tuesday") >>> len(weekday) 5 >>> weekday ['Monday', 'Wednesday', 'Thursday', 'Friday', 'Tuesday'] >>> weekday.remove("Tuesday") >>> weekday ['Monday', 'Wednesday', 'Thursday', 'Friday'] >>> weekday.insert(1, "Tuesday") >>> weekday ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] >>> /<code>
快速清空list,或者清空連續的切片元素。del關鍵字可以刪除部分列表內容,也可以刪除整個變量。
<code>>>> weekday ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] >>> weekday[1:3]=[] >>> weekday ['Monday', 'Thursday', 'Friday'] >>> weekday.clear() >>> weekday [] >/<code>
嵌套的list, 比如:
<code>>>> a=[1,2,3,4,5] >>> a [1, 2, 3, 4, 5] >>> b=[6,7,8] >>> c=[a,b] >>> c [[1, 2, 3, 4, 5], [6, 7, 8]] >>> c[0] [1, 2, 3, 4, 5] >>> c[1] [6, 7, 8] >>> c[0][1] 2 >>> c[0][0] 1 >>> c[0][4] 5 >>> c[1][0] 6 >>> c[1][2] 8 >>> c[1][3] Traceback (most recent call last): File "", line 1, in c[1][3] IndexError: list index out of range >>> /<code>
Tuple 元組
tuple元組,也是一種有序對象集合,也可以同樣地對其中的數據元素進行索引和切片。
不同的是,元組是不可變的,一旦定義,就不能修改,這一點跟string相同。可以認為,元組是常量列表,不可變列表。
元組寫在小括號 () 裡,元素之間用逗號隔開。
如果要定義的tuple只有一個元素,需要定義的時候,在元素後面加一個逗號。不然,python會識別成數字1.
Python在顯示只有1個元素的tuple時,也會加一個逗號,以免你誤解成數學計算意義上的括號。
元組數據的操作方法和string, list類似,也可以del, index, slicing.
<code>>>> tup1=() >>> tup1 () >>> tup2=(1) >>> tup2 1 >>> tup3=(1,) >>> tup3 (1,) >>> del tup2 >>> tup2 Traceback (most recent call last): File "", line 1, in tup2 NameError: name 'tup2' is not defined >>> >>> tup4=(1,2,3,4,6,"abc",8,9,"ABC") >>> tup4 (1, 2, 3, 4, 6, 'abc', 8, 9, 'ABC') >>> tup4[0] 1 >>> tup4[5] 'abc' >>> tup4[-1] 'ABC' >>> tup4[3:6] (4, 6, 'abc') /<code>
相關鏈接:
Never too late to learn...to be continued...