python內建資料型別:列表和元組

weixin_34304013發表於2011-10-31

序列(列表和元組)

2.2 通用序列操作


1)索引
    從左到右計數(第一個)為0,從右到左計數(最後一個)-1.
    字串可以直接使用索引:"hello"[2]

2)分片
    提供兩個邊界作為索引,第一個邊界包括,第二個邊界不包括。
    numbers = {1,2,3,4,5,6,7,8,9,10}
    
    優雅捷徑:
        numbers[-3:-1]    [8,9]
        numbers[-3:0]    []  左邊索引必須比右邊索引早出現才不是空集
        numbers[-3:]    不填邊界表示到最邊界處
        numbers[:]    整個列表
    步長:    
        預設步長是1,如果不是1,需要指定
        numbers[m:n:k]    指定步長為k
        步長不能為0,但步長可以為負數,為負數時,列表的左右邊界應該是從右到左的。

3)序列相加:
    [1,2,3] + ["hello"]        [1, 2, 3, 'hello']
    但列表和字串不能相加

4)乘法:
    “python” * 2        “pythonpython”
    [42] * 3        [42,42,42]
    None 空列表 初始化

5)成員資格:in
    返回布林值:某個物件是否為一個序列的成員
    

6)長度
    內建函式len,max,min


-----------------------------------------------------------------------------

2.3 列表:

1.list函式
    
    將字串或其他系列轉換成列表
    由於字串不可變,轉換成列表後可以改變:
    list("hello")    ['h','e','l','l','o']
    
    ps:用 ''.join(somelist)可以將一個列表somelist轉換成字串


2.列表基本操作

    1)改變列表:元素賦值    
        不能為一個不存在的索引位置賦值

    2)刪除元素
        del names[2]
        刪除後列表長度自動縮減,順序保持

    3)分片賦值
        一次為多個元素賦值
        a 注意在普通賦值時,不存在的索引處不能賦值,但是分片賦值卻可以實現使用與原分片不等長的序列將分片替換:
        name = list('perl')
        name[1:] = list('ython')

        b 替換一個空分片的分片賦值可以實現插入一個序列

        c 同理,給一個分片賦值一個空的分片可以用來刪除這個分片


3.列表方法
    
    1)append
        lst.append(xxx):注意沒有返回值!
    
    2)count
        統計某個元素在列表中出現的次數:lst.count(xxx)

    3)extend
        在一個序列的末尾追加另一個序列中的多個值
        a.extend(b) 將b追加到a後面了,a此時改變了
    
    4)index
        names.index('jmz')
        找到列表中第一個匹配項的索引,找不到會引發異常
    
    5)insert
        names.insert(5,'jmz')
        將‘jmz’這個名字插入為索引5位置處
    
    6)pop
        lst.pop() 移除最後一個元素並返回這個移除的元素
        pop方法是唯一一個既能修改列表又能返回元素的方法,注意以上方法中修改列表的方法均不返回值。
    
    7)remove
        names.remove('jmz')  刪除第一個匹配的專案
    
    8)reverse
        names.reverse()    將列表元素倒序存放
    
    9)sort
        注意也是沒有返回值
        x.sort()  x變得有序,但這個表示式並不返回值
        y = x.sort並不能將x的有序形式賦值給y
        
        可以這樣:
        y = x[:]
        y.sort()
        或者:
        y = sorted(x)
        來實現一樣的功能
    
    10)高階排序
        
        cmp引數來指定自己的排序方式:numbers.sort(cmp)
        定義你自己的cmp函式,小於時返回負數,大於時返回正數,相等時返回0
        
        key引數指定排序鍵:names.sort(key = len)  按照長度        
        
        reverse引數指定是否反向排序:number.sort(reverse = true)



-----------------------------------------------------------------------------

2.4 元組學習:不可變序列

    如果你用逗號隔開一些值,那麼就自動建立了元組
    
    1)tuple函式
        將字串,序列轉換為元組,如果被轉換的本身就是元組,則原樣返回。
        tuple([1,2,3])        (1,2,3)
        tuple('hello')        ('h','e','l','l','l','o')
        tuple((1,2,3))        (1,2,3)



-----------------------------------------------------------------------------


總結:

    列表:[]   可變序列
    元組:()    不可變序列
    
    一些方法


 

 

相關文章