python初學(2)列表 list


(ID爲註釋,方便後面理解)

1、Python包含6種內建的序列,list,tuple,字符串,Unicode字符串,buffer對象,xrange對象。。。現主要進行list和tuple的學習
概述:list 類似於 C語言裏的數組,但又不相同, C語言裏的數組是某一個是數據類型(數據類型唯一),而 list 數據類型不唯一

實例: li = [ 1, 'a', 3.45 , 10000, [1  ,5] , (1 , 5) ] 都是可以的
2、一些基本操作
(1)索引,類似 C語言的下標訪問,但區別在於支持負訪問,-1代表最後一個元素

實例 :
        li = [ 1, 'a', 3.45 , 10000, [1  ,5] , (1 , 5) ]
        >>>li[-1]
        (1,5)
(2)切片:支持強大的切片能力(優雅的捷徑)在提取連續序列方面很有用,
實例:  
        li = [1, 2, 3, 4, 6, 5, 9]*3
        print li           #結果 [1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9]
        ID=1 print li[2  : 5]   #結果 [3, 4, 6]
        ID=2 print li[-3  : -1] #結果 [6, 5]
        ID=3 print li[  : 6]    #結果 [1, 2, 3, 4, 6, 5]
        ID=4 print li[7 : ]     #結果 [1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9]
        ID=5 print li[ : ]      #結果 [1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9]
        ID=6 print li[3 : 1]    #結果 []
切片操作的實現需要兩個索引作爲邊界,第一個索引的元素包括在裏面,第二個索引的元素不包括在裏面
切片必須保持左邊界小於有邊界(步長爲正數時)ID6
切片支持正負數作爲索引 ID1,ID2;如果一面不寫,代表直接到首部或者尾部ID3,ID4;全部不寫,打印整個list,ID5
(2).2 關於步長
實例:
        print li[ : : 3]        #結果 [1, 4, 9, 3, 5, 2, 6]
步長不能是0,可以爲負數,注意負數時的情況,左邊界大於右邊界
實例:
        print li[1 : 3: -1]     #結果 []
        print li[3 : 1: -1]     #結果 [4, 3]
(3)、序列相加,乘法,成員資格(類似字符串)
實例:
        li = [1, 2, 3, 4]
        li2 = [4, 5, 7]
        print li + li2          #結果 [1, 2, 3, 4, 4, 5, 7]
        print ---------------
        print [42]*10           #結果 [42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
序列乘法可用於初始化列表,(None)
注意:字符串與list不能相加
(4)、元素賦值
    類似於數組賦值
(5)、元素刪除
    del 元素(類似C++)
實例:
    	li = [ 1, 2, 5, 6, 7, 9]
    	del li[2]
    	print li                #結果 [ 1, 2, 6, 7, 9]
3、切片的一些擴展應用
實例:
        li = [ 1, 2, 6, 6, 7, 9]
        ID =1 li[1 : 1] = [10, 22, 23]
        print li                #結果 [1, 10, 22, 23, 2, 6, 6, 7, 9]
        ID = 2 li[2 : 5] = []
        print li                #結果 [1, 10, 6, 6, 7, 9]
(1)、切片賦值 ID1  可以賦值爲與原序列不等長的切片
(2)、切片刪除 ID2  把刪除序列賦值爲[]空切片
(3)、切片插入 ID1  類似於賦值
4、方法
(1)、長度len , 最小值 min,最大值 max,
    min max區別於C++,可以比較任意參數
(2)、list函數,把任意一種類型轉化爲列表類型
實例:
        s = 'The list is very useful'
        print list(s)           #結果 ['T', 'h', 'e', ' ', 'l', 'i', 's', 't', ' ', 'i', 's', ' ', 'v', 'e', 'r', 'y', ' ', 'u', 's', 'e', 'f', 'u', 'l']

(3)、append函數 望列表後面添加元素,
    append(...)
    L.append(object) -- append object to end
可以在列表後面插任意類型的元素(object),可用於列表的擴張,
(4)、extend 可以一次性在列表的後面加另一個序列(也可以用切片賦值實現)
    extend(...)  #iterable(可以用for循環的)
    L.extend(iterable) -- extend list by appending elements from the iterable
實例:
        li = [ 1, 2, 6, 6, 7, 9]
        li.append(1)
        li.append("you are good")
        print li               #結果 [1, 2, 6, 6, 7, 9, 1, 'you are good']
        li.extend([ 1, 2, 4])
        li.extend(( 5, 6, 9))
        print li               #結果 [1, 2, 6, 6, 7, 9, 1, 'you are good', 1, 2, 4, 5, 6, 9]
(5)、count 統計某個元素出現次數
(6)、index 類似於字符串的index(但list沒有find方法)
(7)、insert 插入 (可以用上面所講的切片賦值插入解決)
實例:
        li = [ 1, 2, 6, 6, 7, 9]
        li.insert(3,'four')
        print li               #結果 [1, 2, 6, 'four', 6, 7, 9]
兩個參數分別爲插入位置,插入元素
(8)、pop函數 (唯一一個即修改列表又返回值的函數)
實例:
        li = [ 1, 2, 6, 10, 7, 9]
        print li.pop(2)        #結果 6
        print li               #結果 [1, 2, 6, 7, 9]
pop函數如果不寫參數,則彈出最後元素,否則彈出對應索引的元素

pop函數的高級應用:棧和隊列
棧:用pop函數和append函數維護一個棧(先進後出)
隊列:用pop函數和insert函數維護一個隊列(先進先出)

(9)remove 函數 移除列表中某個值的一個匹配項
實例:
        x = ['tom', 'jack', 'tom', 'lucy', 'bob', 'tom']
        x.remove('tom')
        print x                #結果 ['jack', 'tom', 'lucy', 'bob', 'tom']
(10)、reserve 反轉函數
請注意:本函數改變了列表但不返回值
(11) sort 排序
錯誤實例:
        x = [ 1, 2, 6, 10, 7, 9]
        y = x.sort()
        print x , y            #結果 [1, 2, 6, 7, 9, 10] None
    正確實例:
        x = [ 1, 2, 6, 10, 7, 9]
        y = x[ : ]  #這一部很重要 如果改成 y = x 結果就要更改(這樣相當於指向同一個列表)
        y.sort()
        print y                #結果  [1, 2, 6, 7, 9, 10]
相當於建立一個副本。
(12)、sorted函數 獲取已排序的列表副本,理論上可以用於任何序列,之後返回一個list
實例:
        x = [ 1, 2, 6, 10, 7, 9]
        y = sorted(x)
        print y                #結果 [1, 2, 6, 7, 9, 10]












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章