1. 程式人生 > >python常用序列list、tuples及矩陣庫numpy的使用

python常用序列list、tuples及矩陣庫numpy的使用

dbf delete end for 技術分享 clas 養成 nump b-

近期開始學習python機器學習的相關知識,為了使後續學習中避免編程遇到的基礎問題,對python數組以及矩陣庫numpy的使用進行總結,以此來加深和鞏固自己以前所學的知識。

Section One:Python數組的使用

在python中,數組這個概念其實已經被淡化了,取之的是元組和列表,下面就列表和元組進行相關的總結和使用。

  Subsection One: List

  list列表本質是一種序列類型的數據結構,有點類似於C/C++中所學的數組,但又不同。他們的相同之處在於,二者中的每個元素都分配有一個索引值來進行訪問,如:

技術分享圖片
1 #python list
2 list1 = [physics
, chemistry, 1997, 2000] 3 print(list1[0])
View Code

技術分享圖片

而在C/C++中我們知道,數組也可以通過這種數組名加索引值的方式來訪問,在此不做贅述。

但是,細心的話,我們會發現,python中的列表與C/C++中有所不同,它可以包含不同的數據類型,而C/C++中則不可以。此外,在上面的代碼中,我們可以看到,二者有著相同的創建方式。

但在python中,對於list列表類型的訪問,有著不同的方式,下面就列表的訪問進行總結:

技術分享圖片
 1 """List:
 2 --------------------------------
 3 """
 4 # create a list
5 list1 = [physics, chemistry, 1997, 2000] 6 7 # two methods to access a list as follows: 8 print "list1[0]", list1[0] 9 print "list1[1:4]", list1[1:4] 10 11 print "list1[-1]", list1[-1] 12 print "list1[-2]", list1[-2] 13 14 print "list1[1:]", list1[1:]
View Code

技術分享圖片

從上面兩種方式,其實可以看到,python中的列表可以通過"起始索引:終止索引(可選)"的方式,來直接訪問列表中的一串數據,這在C/C++中是無法做到的,這給我們帶來極大的便利性,加上終止索引,表示訪問從起始索引到終止索引之間的全部數據,不加則意味著要訪問從起始索引到該列表末尾的全部數據。

此外,在列表中,索引值為負代表著從列表末尾來訪問這個列表,圖上圖三、四例子可以看到。

此外,python中對於列表,引入了以下幾種方法來更新和刪除列表,並賦予幾種訪問列表屬性的方法。

# update and delete 
list1.append(Google)
print list1

技術分享圖片

列表可以通過append方法,往列表的末尾添加新的元素,在list1列表的基礎上,這裏添加了一個叫做google的字符串元素。

技術分享圖片
del list1[2]
print "after deleting value at index 2", list1
View Code

技術分享圖片

可以看到,使用del函數將索引為2的數據刪除了,此外,del函數還能結合之前提到的訪問數組的方式來刪除相關元素,如:

技術分享圖片
del list1[1:]
print "after deleting value by list1[1:]", list1
View Code

技術分享圖片

同理,采用起始index:終止index的方式,也是能夠實現刪除列表中一段數據的。

此外,python中提供了一個len函數,來獲取一個列表的長度,使用"+"操作符能夠實現不同數組之間的合並,使用"*"操作符實現創建包含n個相同元素的列表,以及一些循環和遍歷方式來確定數據是否在列表中,下面給出相關的操作:

技術分享圖片
"""List:
--------------------------------
"""
# create a list
list1 = [physics, chemistry, 1997, 2000]
list2 = [1, 2, 3 , 4]

l = len(list1)
print "access len function to get the length of list1"
print l

# + operator
print list1 + list2

list3 = list1 + list2

print "list3:", list3

# * operator
list4 = [hhhh] * 4
print list4

#traverse
print "traverse list1:"
for x in list1:
    print x

#confirm x in list
print "confirm x in list"
print 2 in list1
print 1997 in list1
View Code

技術分享圖片

此外,還可以通過min和max函數來獲取列表的最大最小值,count函數用以計算某元素在列表中的出現次數,remove來移除匹配到的數據,sort函數進行排序,reverse函數進行逆序,這些可以在list的官方文檔中查詢到。

  Subsection Two: 元組

  元組的創建根列表的很類似,但是它用括號進行創建:

技術分享圖片
"""
Tuples
------------------------------
"""

tup1 = (1, 2, 3, "Google")
print tup1

tup2 = (flesh,)
print tup2
View Code

技術分享圖片

細心的小夥伴們可能會看到,我在創建第二個tuples的時候,裏面雖然只有一個元素,但是,我還是用了一個逗號,其實,這是很有必要的,雖然不加也不會有編譯錯誤,在這部分代碼中。但是,在其他情況則不一定了,比如,我們使用元組作為返回參數,如果不加逗號,但是返回的元組中只有一個數據,比如26,那麽,計算機就會因為無法識別該元素是數字26還是元組26。因此,加上是必要的,也有助於我們養成良好的編程習慣。

元組的訪問呢與列表是一樣的,因為它們倆都是python中最為常見的序列結構,在這裏不做贅述,有興趣的小夥伴可以自己去嘗試一下下,值得註意的是,訪問時的形式與列表的相同,不是L(index)的方式,而是L[index]。

此外,在元組中,對相關數據的修改是非法的,如下所示:

技術分享圖片
print "modify the data at index 2"
tup1[2] = 100
print tup1
View Code

技術分享圖片

所以給位小夥伴們在使用元組時一定要註意呀!

但是元組中,可以使用"+"以及"*"兩個操作符來進行對元組的修改。

其余的相關方法如len等,而這類似,可以通過查閱文檔來了解。

Section Two: Numpy庫的使用(後續補充,要吃飯了23333)

python常用序列list、tuples及矩陣庫numpy的使用