官术网_书友最值得收藏!

3.4 Python的基本數據結構

Python的基本數據結構包括列表(List)、元組(Tuple)、集合(Set)、字典(Dict)這些數據結構表示數據在Python中的存儲形式。在Python中,我們可以輸入type(對象)查看數據結構。

3.4.1 列表

1. 列表簡介

列表是Python內置的數據類型,是一種有序的集合,用來存儲一連串元素。列表用[]表示,其中的元素類型可不相同。例如:

>list1 = [1,'2',3,4]
>list1
[1,'2',3,4]

除了使用[]表示列表外,我們還可以使用list函數。

>list([1,2,3])
[1, 2, 3]
>list('abc')
['a', 'b', 'c']

可以通過索引訪問或修改列表中相應位置的元素。使用索引時,通過[]來指定位置。在Python中,索引的起始位置為0,例如取list1第1個位置的元素:

>list1[0]
1

可以通過“:”符號選取指定列表中相應位置的元素,例如取第1到第3個位置的元素。注意,這種索引取數是前包后不包的(包括0位置,但不包括3位置,即取0、1、2位置的元素):

>list1[0:3]
[1, '2', 3]

此外,Python中的負索引表示倒序位置,例如-1代表list1最后一個位置的元素:

>list1[-1]
4

列表支持加法運算,表示兩個或多個列表合并為一個列表,如下所示:

>[1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
2. 列表對象中內置的方法

在Python中,列表對象中內置了一些方法。這里介紹append方法和extend方法。append方法表示在現有列表中添加一個元素。在循環控制語句中,append方法使用較多,示例如下:

> list2 = [1,2]
> list2.append(3)
> list2
[1 ,2 ,3]

extend方法類似于列表加法運算,表示合并兩個列表為一個列表,示例如下:

> list2 = [1,2]
> list2.extend([3,4,5])
> list2
[1, 2, 3, 4,5]

3.4.2 元組

元組與列表類似,區別在于在列表中,任意元素可以通過索引進行修改。而在元組中,元素不可更改,只能讀取。下面展示了元組和列表的區別。我們可以對列表進行賦值,而同樣的操作應用于元組則會報錯。

>list0 = [1,2,3]
> tuple0 = (1,2,3)
> list0[1] = 'a'
> list0
[1, 'a', 3]
> tuple0[1] = 'a'
TypeError      Traceback (most recent call last)
<iPython-input-35-2bfd4f0eedf9> in <module>()
----> 1 tuple0[1] = 'a'
TypeError: 'tuple' object does not support item assignment

這里通過“()”表示元組。在Python中,元組類對象一旦定義則無法修改,但支持加運算,即合并元組。

>(1,2,3)+(4,5,6)
(1, 2, 3, 4, 5, 6)

元組也支持像列表那樣通過索引訪問元素。

>t1 = (1,2,3)
> t1[0]
1
> t1[0:2]
(1,2)

3.4.3 集合

在Python中,集合是一組key的集合,且key不能重復。我們可以通過列表、字典或字符串等創建集合,或通過“{}”表示創建,示例如下:

>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>basket
{'apple', 'banana', 'orange', 'pear'}
>basket = set(['apple', 'orange', 'apple', 'pear', 'orange', 'banana'])
> basket
{'apple', 'banana', 'orange', 'pear'}
> basket = set(('apple', 'orange', 'apple', 'pear', 'orange', 'banana'))
> basket
{'apple', 'banana', 'orange', 'pear'}

Python支持數學意義上的集合運算,比如差集、交集、補集、并集等,例如:

>A = {1,2,3}
>B = {3,4,5}

A、B的差集,即去除集合A中集合A、B共有的元素:

>A – B
{1, 2}

A、B的并集,即集合A與集合B的全部唯一元素:

>A | B
{1, 2, 3, 4, 5}

A、B的交集,即集合A和集合B共有的元素:

>A & B
{3}

A、B的對稱差,即集合A與集合B的全部唯一元素去除集合A與集合B的共有元素:

>A ^ B
{1,2,4,5}

需要注意,集合不支持通過索引訪問指定元素。

3.4.4 字典

Python中內置了字典(在其他語言中也稱為Map),其使用鍵-值(key-value)存儲,以便提高查找速度。其格式是用大括號“{}”括起來,其中key和value用冒號“:”進行分隔,示例如下:

>dict1 = {'Nick':28,'Lily':28,'Mark':24}
> dict1
{'Lily': 28, 'Mark': 24, 'Nick': 28}

字典本身是無序的,我們可以通過方法keys和values提取鍵-值對中的鍵和值,如下所示:

>dict1.keys()
['Nick', 'Lily', 'Mark']
> dict1.values()
[28, 28, 24]

字典支持按照鍵訪問相應的值,如下所示:

>dict1['Lily']
28

這里需要注意定義字典時,鍵不能重復,否則重復的鍵值會替代原先的鍵值。如下示例中,鍵‘Lily’重復,其值被替換。

>dict3 = {'Nick':28,'Lily':28,'Mark':24,'Lily':33}
{'Lily': 33, 'Mark': 24, 'Nick': 28}
主站蜘蛛池模板: 商洛市| 宜君县| 泗水县| 乌什县| 绥芬河市| 镇平县| 北碚区| 榕江县| 修文县| 富民县| 平乐县| 二手房| 定结县| 商河县| 崇明县| 石泉县| 开化县| 黔西县| 永泰县| 华亭县| 桂平市| 昌江| 岱山县| 雅江县| 辽宁省| 大埔县| 延寿县| 合江县| 改则县| 兰州市| 鸡泽县| 漳州市| 突泉县| 茌平县| 远安县| 潞西市| 子洲县| 鄂温| 白朗县| 洞口县| 苍溪县|