Python字典、列表、元組、數組

介紹Python字典、列表、元組、數組的函數和方法。

一、字典

1 、內置函數

1、cmp(dict1, dict2)
比較兩個字典元素。

2、len(dict)
計算字典元素個數,即鍵的總數。

3、str(dict)
輸出字典可打印的字符串表示。

4、type(variable)
返回輸入的變量類型,如果變量是字典就返回字典類型。

2、內置方法

1、dict.clear()
刪除字典內所有元素

2、dict.copy()
返回一個字典的淺複製

3、dict.fromkeys(seq[, val])
創建一個新字典,以序列 seq 中元素做字典的鍵,val 爲字典所有鍵對應的初始值

4、dict.get(key, default=None)
返回指定鍵的值,如果值不在字典中返回default值

5、dict.has_key(key)
如果鍵在字典dict裏返回true,否則返回false

6、dict.items()
以列表返回可遍歷的(鍵, 值) 元組數組

7、dict.keys()
以列表返回一個字典所有的鍵
8、dict.setdefault(key, default=None)
和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設爲default

9、dict.update(dict2)
把字典dict2的鍵/值對更新到dict裏

10、dict.values()
以列表返回字典中的所有值

11、pop(key[,default])
刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key值必須給出。 否則,返回default值。

12、popitem()
隨機返回並刪除字典中的一對鍵和值

數組轉換爲字典:

1、現在有兩個列表,list1 = [‘key1’,‘key2’,‘key3’]和list2 = [‘1’,‘2’,‘3’],把他們轉爲這樣的字典:{‘key1’:‘1’,‘key2’:‘2’,‘key3’:‘3’}

list1 = ['key1','key2','key3']

list2 = ['1','2','3']

list2 = range(len(list1))

dict(zip(list1,list2))

{'key1':'1','key2':'2','key3':'3'}

2、將嵌套列表轉爲字典,有兩種方法,

new_list= [['key1','value1'],['key2','value2'],['key3','value3']]

dict(list)

{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}

二、列表

列表初始化

1.初始化遞增的list:

list1 = range(10)
print(list1)
	[0,1,2,...,9]

2.初始化每項爲0的一維數組:

list2 = [0] * 5
print(list2)
	[0,0,0,0,0]

3.初始化固定值的一維數組:

initVal = 1
listLen = 5
list3 = [ initVal for i in range(5)]
print(list3)
	[1,1,1,1,1]
list4 = [initVal] * listLen
print(list4)
	[1,1,1,1,1]

4.初始化一個5x6每項爲0(固定值)的數組(推薦使用):

multilist = [[0 for col in range(5)] for row in range(6)]

5.初始化一個5x6每項爲0(固定值)的數組

multilist = [[0] * 5 for row in range(3)]

看到了以上的方法,那初始化一個二維數組時,是否可以這樣做呢:

multi = [[0] * 5] * 3

其實,這樣做是不對的,因爲[0] * 5是一個一維數組的對象,* 3的話只是把對象的引用複製了3次,比如,我修改multi[0][0]:

multi = [[0] * 5] * 3
multi[0][0] = 'Hello'
print(multi)

輸出的結果將是:

[['Hello', 0, 0, 0, 0], ['Hello', 0, 0, 0, 0], ['Hello', 0, 0,0, 0]]

我們修改了multi[0][0],卻把我們的multi[1][0],multi[2][0]也修改了。這不是我們想要的結果。

但是如下寫法是對的:

multilist = [[0] * 5 for row in range(3)]
multilist[0][0] = 'Hello'
print(multilist)

我們看輸出結果:

[['Hello', 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

恩,沒問題。但是,由於使用 * 的方法比較容易引起混淆導致Bug,所以還是推薦使用上面方法4,即:

multilist = [[0 for col in range(5)] for row in range(6)]

三、元組

初始化

L = 3, 4, 5
或 L = (3,4,5)

del(L) //刪除元組
(1,2) + (3,4) //得到一個新的元組

元組索引,截取

因爲元組也是一個序列,所以我們可以訪問元組中的指定位置的元素,也可以截取索引中的一段元素,如下所示:

元組:

L = ('spam', 'Spam', 'SPAM!')
Python 表達式 結果 描述
L[2] ‘SPAM!’ 讀取第三個元素
L[-2] ‘Spam’ 反向讀取,讀取倒數第二個元素
L[1:] (‘Spam’, ‘SPAM!’) 截取元素

內置函數

cmp(tuple1, tuple2)
比較兩個元組元素。

len(tuple)
計算元組元素個數。

max(tuple)
返回元組中元素最大值。

min(tuple)
返回元組中元素最小值。

tuple(seq)
將列表轉換爲元組。

數組

數組創建

import numpy as np

a = np.array([2,3,4])
b = np.array([2.0,3.0,4.0])
c = np.array([[1.0,2.0],[3.0,4.0]])
d = np.array([[1,2],[3,4]],dtype=complex) # 指定數據類型

print(a) #打印數組

創建數組的常用函數

np.arange(0,7,1,dtype=np.int16) # 0爲起點,間隔爲1時可缺省(引起歧義下不可缺省)
np.ones((2,3,4),dtype=np.int16) # 三維數組,2頁,3行,4列,全1,指定數據類型
np.zeros((2,3,4)) #三維數組, 2頁,3行,4列,全0
np.empty(3) #值取決於內存
np.arange(0,10,2) # 起點爲0,不超過10,步長爲2
np.linspace(-1,2,5) # 起點爲-1,終點爲2,取5個點 
np.random.randint(0,3,(2,3)) # 大於等於0,小於3,2行3列的隨機整數




b = np.ones((2,3,4),dtype=np.int16)
print(b.shape) #輸出a的形狀
print(b.shape[0]) #頁數 , 1行數,2列數
print(b.ravel()) # 輸出平坦化後的a(a本身不改變)
b.shape = (6,2); print(b)# 改變a的形狀
print(a.transpose()) # 輸出a的轉置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章