Python學習之路(4) - 基本數據類型:Lists, Tuples

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...


分享到:


相關文章: