附註:本文測試環境為python 2.7
列表(list),同數組不同,它既可以儲存相同類型的數據,也可也儲存不同類型的資料
list1 = [1,2,3]
list2 = [1,'hello',False]
列表屬於序列,所以兼顧序列的一些通用特性
#1、索引
list1 = [1,2,3,4]
列表的索引由左往右,從0開始,依序+1
s1[0]代表第一個元素,這裡s1[0] = 1
從右往左取索引,從-1開始,依序-1
s1[-1]代表最後一個元素,這裡s1[-1] = 4
2、分片
分片運算子為':'(冒號),分片運算是產生新清單的一種很方便的方式
s1 = [1,2,3,4]
s2 = s1[1:3] #第一個參數為開始的索引,第二個參數為結束的索引(結束索引處的元素是無法取到的,1:3只能取到索引1和2)
輸出結果:s2 = [2,3]
s3 = s1[1:-1] #這裡索引-1相當於上面的3
#輸出結果:s3 = [2,3]
註1:參數1與參數2都可以省略參數1,省略時代表起始索引0 參數2,省略時代表最大位置索引
註2:s1[-1,1] = [ ] ,從最後一個索引,取到開始的索引,這樣返回是空列表。事實上,當左邊的索引比右邊晚出現時,都會返回空列表
當我們需要倒取整個列表時,我們引入了步長這個概念
s1[a:b :c],分片操作其實有三個參數,參數1和2已經介紹過了,參數3即為步長,預設步長可以省略,預設為1
所以s1[:] 回傳整個列表另外s1[::-1] 返回整個反轉列表
關於分片操作,我們寫如下幾行程式碼
s1 = [1,2, 3,4]
s2 = s1 #將s1賦值給s2
#s3 = s1[:] #將s1的列表賦值給s3
#print s1==s2 #判斷s1與s2的值是否相同
print s1==s3
print s1 is s2 #判斷s1和s2是否是同一個序列
#print s1 is s3
為了拷貝出一個新的序列,直接賦值顯然是不行的,我們使用了分片
3、加/乘
s1 = [1,2,3]
s2 = [4,5,6]
s = s1+s2 兩個清單相加後,回傳新清單s=[1,2 ,3,4,5,6]
s3 = 'hello'
s4 = (1,2,3)
s1+s3
s1+s4
該語句執行後,會報錯
註:雖然字串和元組,都和列表一樣為序列,但是兩者不能直接相加
這裡:引入一個內建函數list(),可以將字串或元組直接轉換成字串s1 + list(s3) s1 + list(s4) 這樣,就可以正常執行了
附註:list()可以將字串、元組等序列轉換成列表,如何將列表轉換成字串呢?
eg:s = ''.join(list1) ,可以將列表list1轉換成字串s
列表的乘法s1 = [1]
s2 = s1*10
回傳s2 = [1,1,1,1,1,1,1,1,1,1]
#常用來宣告空列表
s1 = [None] #這時候使用s1 = [] 是不行的
s2 = s1*10
宣告了一個長度為10的空列表
4、檢查元素是否存在s1 = [1,2,3]
if 1 in s1:
print "元素存在"
else:
print "元素不存在"
5、清單常用內建函數
list1 = [1,2,3, 4]
len(list1) #取列表長度
#max(list1) #取列表最大值
min(list1) #取列表最小值
sum(list1) #對列表成員求和,求和的列表成員中不能有字串,否則會報錯
cmp(list1,list2) #比較兩個列表的大小,返回結果為1,-1,0
比較規則全是數字,比較最小的數字
字母大於數字
字母從首字母按出現順序比較
全部一致,比較長度,長的更大都一致,視為相等,回傳0
以上是python序列之列表的詳細內容。更多資訊請關注PHP中文網其他相關文章!