2.2資料結構與序列
阿新 • • 發佈:2020-09-20
liebiao = ['編號89757','石景文','David','Bob',45,66]
len(liebiao)
6
用索引來訪問list中每一個位置的元素,索引是從0開始的
liebiao[1]
'石景文'
liebiao[-1]
66
liebiao[5]
66
1)引用傳遞 將不同列表指向同一個列表
lie1 = [1,2,3,4]
lie2 = lie1
lie2
[1, 2, 3, 4]
2)分片 隔開的兩個索引來實現。如果提供兩個索引作為邊界,則第1個索引的元素包含在分片內,而第2個則不包含在分片內
要點:左閉右開
liebiao[:]
['編號89757', '徐超', 'David', 'Bob', 45, 66]
liebiao[2:4]
['David', 'Bob']
liebiao[:3]
['編號89757', '徐超', 'David']
liebiao[2:]
['David', 'Bob', 45, 66]
3)序列相加
list1 = [1,2,3,4]
list2 = [2,3,3,3]
list1 + list2
[1, 2, 3, 4, 2, 3, 3, 3]
4)成員資格
liebiao
['編號89757', '徐超', 'David', 'Bob', 45, 66]
45 in liebiao
True
5)長度、最大值、最小值(len、min、max)
ll = ['編號89757', '徐超', 'David', 'Bob', '45', '66']
max(ll)
'編號89757'
min(ll)
'45'
len(ll)
6
6)刪除元素與分片賦值
lizi = list('jskajnsckarituwpo')
del lizi[3:]
lizi
['j', 's', 'k']
lizi[3:]=list('2w74r7')
lizi
['j', 's', 'k', '2', 'w', '7', '4', 'r', '7']
del lizi[4:]
lizi
['j', 's', 'k', '2']
lizi[2:]=list('2333')
lizi
['j', 's', '2', '3', '3', '3']
7)內建函式
enumerate函式
for x in enumerate(lizi):
print(x)
(0, 'j')
(1, 's')
(2, '2')
(3, '3')
(4, '3')
(5, '3')
sorted函式
lizi3 = [5,3,21,45,7,56,2,33,90]
sorted(lizi3)
[2, 3, 5, 7, 21, 33, 45, 56, 90]
sorted(lizi3,reverse=True)
[90, 56, 45, 33, 21, 7, 5, 3, 2]
zip函式
guojia = ['china','USA','riben','deguo']
qidu = ['yazhou','meizhou','dongya','ouzhou']
list(zip(guojia,qidu))
[('china', 'yazhou'),
('USA', 'meizhou'),
('riben', 'dongya'),
('deguo', 'ouzhou')]
8)列表方法
append 在列表末尾追加新的元素,不返回值
lbff = ['編號89757','徐超','David','Bob','45',66,'尼克裡森']
lbff
['編號89757', '徐超', 'David', 'Bob', '45', 66, '尼克裡森']
lbff.append('王朝馬漢')
lbff
['編號89757',
'徐超',
'David',
'Bob',
'45',
66,
'尼克裡森',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢']
count 統計某個元素在列表中出現的次數,返回值
lbff.count('王朝馬漢')
4
extend 在列表的末尾一次性追加另一個列表中的多個值,不返回值
ex = ['zhang heng','taobao']
lbff.extend(ex)
lbff
['編號89757',
'徐超',
'David',
'Bob',
'45',
66,
'尼克裡森',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢',
'zhang heng',
'taobao',
'zhang heng',
'taobao']
index 從列表中找出某個值第一個匹配項的索引位置,返回值
lbff.index('王朝馬漢')
7
insert 將物件插入到列表中,不返回值
lbff.insert(3,'WORD')
lbff
['編號89757',
'PPT',
'徐超',
'WORD',
'David',
'Bob',
'45',
66,
'尼克裡森',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢',
'zhang heng',
'taobao',
'zhang heng',
'taobao']
pop 移除列表中的一個元素(預設最後一個),返回該元素的值
lbff.pop()
lbff
['編號89757',
'PPT',
'徐超',
'WORD',
'David',
'Bob',
'45',
66,
'尼克裡森',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢',
'王朝馬漢']
sort 在原位置對列表進行排序,不返回值
shulie = [5,3,233,666,21,45,7,56,2,33,90]
shulie.sort(reverse=True)
shulie
[666, 233, 90, 56, 45, 33, 21, 7, 5, 3, 2]
2.元組
tuple
yz = tuple('pltgmmdhcnsk')
yz
('p', 'l', 't', 'g', 'm', 'm', 'd', 'h', 'c', 'n', 's', 'k')
元組拆包(unpacking): 對元組型變量表達式進行賦值,Python會嘗試將“=”右側的值進行拆包
country = tuple(guojia)
country
('china', 'USA', 'riben', 'deguo')
x1,x2,x3,x4 = country
x4
'deguo'
country.count('china')
1
3.字典
使用鍵-值(key-value)儲存,具有極快的查詢速度。
字典使用“{ }”用“:”分隔鍵和值並用“,”分隔項來定義。
注意:字典中的鍵是唯一,值不一定是唯一的
zidian = {'邁克爾':'66','孫尚香':'78','李白':'88','始皇帝':'94','貞德':'81'} zidian
{'始皇帝': '94', '孫尚香': '78', '李白': '88', '貞德': '81', '邁克爾': '66'}
字典的操作
1)len() 返回d中項(鍵-值對)的數量
len(zidian)
5
2)zidian[k] 返回關聯到鍵k上的值
zidian['李白']
'88'
3)zidian[k]=v 將值v關聯到鍵k上
zidian['貞德'] = 86
zidian
{'始皇帝': '94', '孫尚香': '78', '李白': '88', '貞德': 86, '邁克爾': '66'}
4)del zidian[k] 刪除鍵為k的項
del zidian['邁克爾'] #如果用del zidian['94']就會報錯,為什麼? zidian
5)k in zidian 檢查zidian中是否含有鍵k的項
zidian
{'始皇帝': '94', '孫尚香': '78', '李白': '88', '貞德': 86}
'孫尚香' in zidian
True
字典的特性
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住
zidian2 = {'張龍':'66','趙虎':'55','趙虎':'71','王朝':'77','馬漢':'74','展昭':'88'} zidian2
{'展昭': '88', '張龍': '66', '王朝': '77', '趙虎': '71', '馬漢': '74'}
2)鍵必須不可變,所以可以用數、字串或元組充當,用列表就不行
zidian3 = {'包青天':'92','三廉王':'87',['趙貞']:'44'} zidian3
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-101-2435c3b44439> in <module>() ----> 1 zidian3 = {'包青天':'92','三廉王':'87',['趙貞']:'44'} 2 3 zidian3
TypeError: unhashable type: 'list'