1. 程式人生 > 實用技巧 >2.2資料結構與序列

2.2資料結構與序列

1.列表

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'