數據結構的分類依據?基本的“數組”在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]
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 比較
