Python<1>List
list裏的元素以逗號隔開,以[]包圍,當中元素的類型隨意
官方一點的說:list列表是一個隨意類型的對象的位置相關的有序集合。
它沒有固定的大小(1)。通過對偏移量
(2)進行賦值以及其它各種列表的方法進行調用,可以改動列表的大小。
(1)雖然列表沒有固定的大小。Python仍不同意引用不存在的元素,超出列表末尾之外的索引會導致錯誤。賦值也是。
(2)我們能夠通過偏移量對列表進行索引。切片等操作,並且索引值可為負值。
list的主要屬性
<1>隨意對象的有序集合(從左到右的順序)
<2>通過偏移量讀取
<3>可變長度、異構以及隨意嵌套(能夠創建列表的子列表的子列表...)
<4>屬於可變序列的分類(可在原處改動,序列操作在列表和字符串中工作方式同樣。差別就是列表可變。能夠運行
刪除、索引賦值等操作。字符串不可變,不能運行這些)
<5>對象引用數組
經常使用list操作
<1>L=[] 一個空列表 L=list()
<2>L=[0,1,2,3] 四項:索引為0-3
<3>L=[1,[2,3]] 嵌套子列表
<4>L[i] L[i:j] len(L) 索引、分片、求長度
<5>L1+L2 合並
<6>L * 3 反復3次
<7>for x in L : print x 叠代打印
<8>L.append(x) 插入
<9>L.extend([x,y,z]) 增長
<10>L.insert(I,x) 在I處插入x
<11>L.Count(x) 返回x出現的次數
<12>L.sort() 排序
<13>L.reverse 反
<14>del L[K] 刪除
<15>del L[m,n]
<16>L.pop()
<17>L.remove(x)
<18>L[i:j]=[]
<19>x in L
range()和split()函數得到的都是list
L=range(-5,5) -> L=[-5,-4,-3,-2,-1,0,1,2,3,4]
L=‘this is a test‘.split() -> L=[‘this‘,‘is‘,‘a‘,‘test‘]
註:
{1}索引、分片的賦值是直接在原list上直接改動的。
如<18>分片的賦值能夠看做(3)將原片刪除。再把數據插入。
註:當賦值與分片的值發生重疊時,須要具體的分析
比方L[2:5] = L[3:6] 是可行的,在刪除2:5之前已經把3:6的數據提出了,刪除之後再插入2:5。
(3)實際情況並不是如此,但這有助於你理解為什麽刪除的數目不須要與插入的數目相等。
比方說L=[1,2,3,4] L[1:2]=[4,5] 此時L=[1,4,5,3,4] L[1:2]=[]是把第二項刪除
{2}L.append(x)與L+[x]的結果類似,不同的是前者是原處改動L,而後者會生成新的列表。
{3}對於sort,我們能夠通過傳入keyword參數來改動排序行為。在2.6以及之前的版本號中,不同類型的數據也是能夠
排序的。這一次序是依照類型名稱定的。比如。全部整數都小於全部字符串..等等。在3.0中就不一樣了。不同類型
排序會發生異常。
{4}要當心append和sort都是在原處直接改動列表,返回為None。假設編輯類似L=L.append(x)的語句。將不會得到
L改動後的值(實際上會失去整個列表的引用),所以沒有理由又一次賦值。
{5}分片[i:j]的值。包含左邊界,不包含右邊界。
L=[0,1,2] L[1:]=[] -> L=[0] L[0]=[]->L=[[]]
Python中還包含了一個更高級的操作稱為列表解析表達式,因為比較復雜。以後再單獨寫一篇說明。
實現命令行指定一個數值文件。輸出最大值和最小值
import sys #為了獲得命令行參數 if len(sys.argv) != 2 print"please supply a filename" raise SystemExit(1) f = open(sys.argv[1]) lines = f.readlines() #打開文件 將全部輸入行存在一個字符串列表中 f.close fvalues=[float(line) for line in lines] #全部字符串循環,並對每一個元素float 構造一個新列表 print "The minimum value is ",min(fvalues) print "The maximum value is ",max(fvalues) #通過內置函數得到最大值和最小值
參考<<learning python>>
Python<1>List