第三章 Python容器:列表、元組、字典與集合


 

數據結構的分類依據?基本的“數組”在python中是列表,

數據結構的作用?容器,盛放數據,是由原子組成的分子。可以將一群數據進行整合、拆分、重排。

3.2 列表

列表是啥?順序表,可以同時存放任意類型數據,可變。

如何創建列表?3種方式,[ ],list()、列表推導。

test = ["lizhixin", 1991, 180.0, True]
>>> b = ('lizhixin', 1991, 180.0, False)
>>> a =list(b)  #list不能有多個參數,其作用是將其他結構轉化為列表
>>> a
['lizhixin', 1991, 180.0, False]

額外閱讀:Python 列表(List)操作方法詳解

list( )函數都有哪些用途?

如上,可以將元組轉化為列表;其次可以將字符串轉化為列表,如下:

>>> a = list("lizhixin")
>>> a
['l', 'i', 'z', 'h', 'i', 'x', 'i', 'n']

如何分割字符串?使用split()方法,如下:

>>> a = "lizhixin"
>>> b = a.split('i')
>>> b
['l', 'zh', 'x', 'n']

如何獲得列表中的某個元素?修改元素? 使用偏移量offset

>>> a = ["li", "zhi", "xin"]
>>> a[0] #最多為a[2]
'li'
>>> a[-1] #最少為a[-3]==a[0]
'xin'

列表中的列表有什么用途? 組成了一個簡單的二維數組,如下:

>>> a = ['li', 'zhi', 'xin']
>>> b = ['zhang', 'lu']
>>> c = ['ming']
>>> d = [a, b, c]
>>> d
[['li', 'zhi', 'xin'], ['zhang', 'lu'], ['ming']]
>>> d[0][0]
'li'
>>> d[2][0]
'ming'

如何使用切片提取指定范圍的元素? 切片用法很多,主要有三個參數,起始、終止和步長。[start:end:step,注意提取到的是end-1。

>>> a = [0,1,2,3,4,5]
>>> a[0:3]  #3-1
[0, 1, 2]
>>> a[::2]  #默認從0開始
[0, 2, 4]
>>> a[::-2]  #從最后開始
[5, 3, 1]
>>> a[::-1]
[5, 4, 3, 2, 1, 0]

如何向尾部添加元素?如何合並列表?如何插入元素?如何刪除指定位置元素?如何刪除指定值的元素?如何獲取並刪除指定位置元素?

使用列表對象的append( )方法,向列表尾部添加元素:

>>> a=[]
>>> a.append("lizhixin")
>>> a
['lizhixin']

使用對象的extent()方法或 += 運算符合並列表:

>>> a = ["lizhixin"]
>>> b = ["zhangminglu"]
>>> a.extend(b)
>>> a
['lizhixin', 'zhangminglu']
>>> a = [1]
>>> b = [2]
>>> a += b
>>> a
[1, 2]

使用insert()方法在指定位置插入元素:

>>> a = [1,2,3,4]
>>> a.insert(1, 5)
>>> a
[1, 5, 2, 3, 4]

使用del 語句 刪除指定位置元素:

>>> a = [1,2,3,4]
>>> a
[1, 2, 3, 4]
>>> del a[2]
>>> a
[1, 2, 4]

使用remove()函數刪除指定值元素:

>>> a.remove(4)
>>> a
[1, 2]

使用pop()函數獲取並刪除指定位置的元素:

>>> a.pop()
2
>>> a
[1]

添加元素:append( ), extent( ), insert( ).

刪除元素:del, remove( ), pop( ).

 

如何查詢具有指定值元素的位置?如何判斷值是否存在?如何計算特定值出現的次數?如何轉換為字符串?

使用index()函數查詢具有特定值的元素位置:

>>> a = [1,2,3,4,5]
>>> a.index(3)
2

使用in語句判斷值是否存在:

>>> 5 in a
True

使用count()函數計算特定值出現的次數:

>>> a.count(3)
1

使用字符串的join()方法將字符列表轉化為字符串:

>>> a = ['`', 'q', '1']   #其元素不能是非字符
>>> ''.join(a)
'`q1'

如何排序?如何獲取長度?如何賦值和賦值列表?

使用列表sort()方法重新排列元素,改變原列表:

>>> a = ["li", "zhi", "xin"]
>>> a.sort()
>>> a
['li', 'xin', 'zhi']

使用sorted()函數返回排序后列表副本:

>>> a = ["li", "zhi", "xin"]
>>> sorted(a)
['li', 'xin', 'zhi']
>>> a
['li', 'zhi', 'xin']
>>> a.sort(reverse=True)
>>> a
['zhi', 'xin', 'li']

使用len()函數返回列表長度:

>>> len(a)
3

使用=號賦值(對象之間只是引用賦值):

>>> a = [1, 2, 3]
>>> b = a
>>> a[0] = 5
>>> b
[5, 2, 3]

使用列表的copy()方法復制:

>>> a = [1, 2, 3]
>>> b = a.copy()
>>> b
[1, 2, 3]
>>> c = list(a)
>>> c
[1, 2, 3]
>>> d = a[::]
>>> d
[1, 2, 3]

 

3.3 元組

元組與列表的區別?元組是不可變的,不能插入和刪除或修改,相當於一個常量列表,只能整體改變。

怎么創建元組?

>>> a = ()  #創建空元組
>>> a
()
>>> a = 1,   #元組不是由括號來創建的,而是由逗號
>>> a
(1,)

元組解包是啥?如何實現?

>>> a = 1, 2, 3,
>>> a
(1, 2, 3)
>>> b, c, d = a
>>> b
1

額外技巧:

>>> a = 1  #替換,思路是元組賦值
>>> b = 2
>>> a, b = b, a
>>> a
2
>>> b
1
如何將列表轉化為元組?
>>> a = [1, 2, 3]
>>> tuple(a)
(1, 2, 3)

 

3.4 字典

字典的鍵必須彼此不同,必須是唯一標識。

怎么創建字典?

>>> a = {}
>>> a
{}
>>> a = {1:a, 2:b, 3:c}
>>> a
{1: {}, 2: 1, 3: 2}

怎么用其他的結構生成字典?

任意的雙值子序列都行,可以很容易的使用zip()函數生成雙元素序列。

>>> a = [[1, 2], [3, 4], [5, 6]]
>>> dict(a)
{1: 2, 3: 4, 5: 6}
>>> b = ((1, 2), (3, 4), (5, 6))
>>> dict(b)
{1: 2, 3: 4, 5: 6}
>>> c = ('ab', 'cd', 'ef')
>>> dict(c)
{'e': 'f', 'c': 'd', 'a': 'b'}

如何修改字典的值?

>>> a = {1: 2, 3: 4, 5: 6}
>>> a[1] = 11
>>> a
{1: 11, 3: 4, 5: 6}
>>> a[6] = 7
>>> a
{1: 11, 3: 4, 5: 6, 6: 7}

如何合並字典?

使用字典的update()方法合並字典:

>>> a = {1:2, 3:4, 5:6}
>>> b = {7:8, 9:0}
>>> a.update(b)
>>> a
{7: 8, 1: 2, 3: 4, 5: 6, 9: 0}

如何刪除指定鍵的元素?

del語句

>>> del a[7]
>>> a
{1: 2, 3: 4, 5: 6, 9: 0}

如何清空所有元素?

>>> a.clear()
>>> a
{}
>>> a = {}
>>> a
{}

如何判斷對象是否在字典內?

>>> a = {1:2, 3:4, 5:6}
>>> 1 in a
True
>>> 2 in a
False

如何獲取字典內所有的鍵?所有的值?如何獲取鍵值對?

字典的keys()方法 和 values()方法

>>> a = {1:2, 3:4, 5:6}
>>> a.keys()
dict_keys([1, 3, 5])
>>> a.values()
dict_values([2, 4, 6])

字典的items()方法:

>>> list(a.items())
[(1, 2), (3, 4), (5, 6)]

3.5 集合

沒有順序,就像是舍棄了值的字典。具有數學意義上的所有集合運算。

如何創建集合?

>>> a = set()
>>> a
set()
>>> a = {1, 2, 3, 4}
>>> a
{1, 2, 3, 4}

如何將其他結構轉化為集合?

>>> set("lizhixin")
{'z', 'h', 'l', 'i', 'n', 'x'}
>>> set([1, 2, 3])
{1, 2, 3}
>>> set((1, 2, 3))
{1, 2, 3}
>>> set({1:2, 3:4, 5:6})
{1, 3, 5}

集合有哪些運算?

交集

>>> a = {1, 2}
>>> b = {2, 3}
>>> a & b
{2}
>>> a.intersection(b)
{2}

並集

>>> a | b
{1, 2, 3}
>>> a.union(b)
{1, 2, 3}

差集

>>> a - b
{1}
>>> a.difference(b)
{1}

異或集

>>> a^b
{1, 3}
>>> a.symmetric_difference(b)
{1, 3}
子集
>>> a <= b
False
>>> a.issubset(b)
False

超集

>>> a >= b
False
>>> a.issuperset(b)
False

真超集

>>> a > b
False

 

3.6 比較

 

3.7 大型數據結構


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM