1. 程式人生 > >【python】入門指南:常用資料結構

【python】入門指南:常用資料結構

Python內建了三種高階資料結構:list,tuple,dict

list:陣列,相同型別的元素組成的陣列

tuple:元組,相同型別的元素組成的陣列,但是這裡有限定條件(長度是固定的,並且值也是固定的,不能被改變)

dict:字典,k-v結構的

 

list陣列

1,初始化和遍歷list

#!/bin/python

a = [1, 2, 3]
print(a, type(a))

for i in a:
    print(a)

輸出:

[1, 2, 3] <class 'list'>
[1, 2, 3]

 

2,list新增和刪除元素

a = [1, 2, 3]
a.append(4)
print(a) # 1,2,3,4
a.insert(1, 11)
print(a) #1,11,2,3,4

解釋:append是在末尾新增元素,insert(n, data)在下標n的位置新增data,原先下標n的元素依次往後移動1位

a = [1, 2, 3, 4]
a.pop()
print(a) # 1,2,3

a = [1, 2, 3, 4]
a.pop(1)
print(a) # 1,3,4

pop()預設將最後一個數值pop出來,pop(n)是將下標為n的位置元素pop出來(這裡如果n大於最大下標,python會丟擲異常out of range)

 

整個將list清空掉

a = [1, 2, 3]
del a
print(a)

這裡會報錯:a is not defined,表名del a這個操作不是僅僅清空a的元素,而且把a本身從程式中刪除掉

 

3,查詢元素(根據key和value來查詢)

判斷a是否包含某個key值,要使用:key <= len(a) - 1

a = [1, 2, 3, 4]
if 3 <= len(a) - 1:
    print('a[3] exist')

if 4 <= len(a) - 1:
    print('a[4] exist
') else: print("a[4] does not exist")

輸出:

a[3] exist
a[4] does not exist

 

元素查詢:a.count(value)

a = [1, 2, 3, 4]
print(a.count(1)) #1
print(a.count(5)) #0

count返回a中包含元素value的次數

 

元素查詢:a.index(value)

a = [1, 2, 3, 4]
print(a.index(1)) #0
print(a.index(0))

index是返回value在a中所在的下標,如果value沒在a中出現,則python丟擲異常:{value} is not in list

4,更新某個key值

a = [1, 2, 3, 4]

if 3 <= len(a) - 1:
    a[3] = 100
else:
    print("a[3] does not exist")

print(a, len(a)) #1,2,3,100

更新某個key的value需要根據下標來更新,但是必須確定該key是未越界的,即不能大於len(a) - 1

 

5,切片

a = [1, 2, 3, 4, 5]

print(a[:]) #[1, 2, 3, 4, 5]

print(a[1:2]) #[2]
print(a[1:-1]) #[2,3,4]
print(a[1:0]) #[]
print(a[1:]) #[2,3,4,5]

print(a[:2]) #[1,2]
print(a[:-1]) #[1,2,3,4]
print(a[:0]) #[]

print(a[-3:]) #[3,4,5]
print(a[-3:-1]) #[3,4]
print(a[-3:0]) #[]

理解:a[n:m],從下標為n的元素開始從左往右數,數到下標為m-1的元素停止

理解n或者m為負值,則他實際計算時遵循的公式是:len(a) + n或者len(a) + m

比如a=[1,2,3,4,5], a[-1:]此處n為-1,實際開始下標為:len(a) + n = 5 + n = 5 - 1 = 4

 

6,其它相關函式

輔助函式1:enumerate

a = [1, 2, 3, 4, 5]

for i, v in enumerate(a):
    print(i, v)

輔助函式2:count(計算list中包含某個元素的次數)

輔助函式:排序相關,sort,reverse

關於list的更詳盡的內容參考:http://www.runoob.com/python/python-lists.html