1. 程式人生 > >python 之 列表與字典

python 之 列表與字典

ppi 實現 for 對象的引用 false key default abc sid

1.4 列表與字典

列表與字典,這兩種類型,都是各種類型的集合,以列表為例,如果列表中包含列表,就形成嵌套。 這兩種類型幾乎是所有python腳本的主要工作組件 。 這種結構信息是可變的可修改的。不像常量,一旦定義便不能再修改。

  • [X] 列表 列表有以下幾大屬性,或者說是特點:
    1. 任意對象的有序集合
    2. 通過偏移量來讀取
    3. 長度可變,異構及任意嵌套
    4. 屬於可變序列分類 與字符串、常量相比而言,列表是可變的,可以進行修改,增加、合並 ,刪除等操作。
    5. 對象引用數組
    6. 列表元素以逗號分隔

    在標準python解析器中,列表就是C數組,而不是鏈接結構。

    • [X] 列表的操作

      關於列表的操作,我們可以通過help(list)或者 dir(list) ,或者用真實的列表替換關鍵詞list 來查看幫助文檔。 除此之外,還有一些其他固定的可用操作。 這裏先了解一些常用的簡單的列表操作方法:

      Table 7: 列表操作
      方法釋義示例
      l=[] 定義列表 l=[‘a‘,2,[‘b‘,‘c,d‘]]
      l=list(…) 定義列表
      l=[c * 4 for c in ‘hal‘] 定義列表
      l.append() 列表末尾添加新成員,列表、字典作用新成員 l.append([‘a‘,2,‘b‘]
      l.clear() 清空列表 l.clear()
      l.copy(value) 復制列表 l.copy()
      l.count(value) 統計某個成員在列表中出現的次數 l.count(‘b‘),l.count(l1, 2)
      l.extend(value) 添加新的內容(如果是列表、字典,則將 l.extend([3,{4,5}])
      字典、列表中的成員逐一添加至原列表,其
      子列表作用一個整體添加)。如果type(value
      )=list 則合並,如果type(value)=set,那麽
      字典中的值會反序添加,如果是字符串,則轉
      化為字典進行合並。
      列表不能添加如l.extend({4,[‘a‘]})
      l.index(value,[start,[stop]]) 返回列表中的值對應的索引序號。在。
      start –> stop之間如果不存在想要查找
      的值,則報錯 l.index({4,5})
      l.insert(index,object) 在指定索引位置 添加新的列表成員 l.insert(2,{‘a‘,‘b‘})
      l.pop([index]) 根據索引位置刪除相應內容。
      index的值必須是單個整數,不能以列表、字
      典等形式傳入,也就是只能一次刪除一個列表
      成員。如果指定索引不存在則報錯。如果不指 l.pop(3)
      定索引值,則默認刪除最後一個成員。
      l.remove(object) 從列表中剔除成員。object必須是完整的成員 l.remove({‘a‘,‘b‘})
      l.reverse() 將列表成員進行反序排列 l.reverse()
      l.sort(key=None,reverse=False)) 該方法默認升序排列。當reverse=Ture時,進
      行反序排列。但是python3.0前後有點區別:
      3.0之前,允許不同元素之間進行排序
      3.0之後,不允許不同類型的列表元素進行排序 l.sort()
      l*2 重復列表內容
      list(‘hal‘)+list(‘berd‘) 列表合並,實際上是生成了一個新的列表
      l[i:j]=[] 根據索引替換相應位置的列表元素.從第i個
      元素開始,包含j個元素。
      len(l) 返回列表元素的個數
      3 in l 判斷列表l中是否為有3的元素,註意數據類型
      del l[ [index] ] 刪除列表中的某個元素,或者刪除整個列表
      思考
      通過使用索引,在列表首尾添加新元素。
      答案:
      l[len[l]:]=[x]; l[:0]=[x]
      使用索引進行列表調整,可以實現append,remove,pop,insert等功能.
      請註意,添加新元素的數據類型。比如列表與字符串
      
  • [X] 字典 字典可以說是列表以外最靈活的內置數據結構。 字典有以下屬性:
    1. 通過鍵來存取值而不是通過偏移量,鍵必須是不可變類型。
    2. 字典元素為無序集合
    3. 可變長,異構,任意嵌套
    4. 屬於可變映射類型
    5. 散列表。通過hash運算進行數據檢索。與列表一樣存儲對象的引用而不是拷貝。
      • 字典操作
        Table 8: 字典操作
        方法釋義示例
        d={} 定義空字典 d={}
        d={‘a‘:‘b‘,‘name‘:‘halberd‘} 定義字典 d={‘name‘:‘halberd‘}
        d=dict(mappint) 定義字典,這種寫法比較復雜難懂。由於dict只能接受 d=dict(( (‘key1‘,‘value1‘),(‘key2‘,‘value2‘),… ))
        一個參數,因此在dict()方法內部必須包含一個代表
        整體的符號,可用的為“(),”“[],” 但是"{},"不能用,dict(())
        或者dict([]),在最內部為key/value的值信息,這樣
        形成三層結構:
        第一層為:dict()
        第二層為:dict(()) 或者 dict([])
        第三層為:dict(([‘key1‘,‘value1‘],(‘key2‘,‘value2‘),…))
        d=dict(zip(keys,values)) 定義字典。 其中keys,與values 的類型分別可以為字符串,
        列表,或者range()等函數返回的一系列值等 d=dict(zip(‘abcd‘,range(1,5)))
        d.clear() 清空字典,不需要傳入任何參數。 d.clear()
        d.copy() 將原字典復制出一個新的字典 e=d.copy()
        d.fromkeys(iterable,value) 定義一個字典中的keys,並賦予相同的值.value默認為None dict.fromkeys([‘a‘,‘b‘],‘123‘)
        iterable 可以是列表,也可以是字典。如果是列表,則列表中 dict.fromkeys({‘name‘:‘halberd‘,‘age‘:20},100)
        每個成員都會轉換成key,如果是字典,則將value 賦值給字典
        中的key
        d.get(key[,values]) 取出字典中鍵對應的值。也可以使用value給予一個新的值。但
        對原來的字典無影響。不寫value部分的時候取出的是字典中key
        對應的值,此時相當於dict[key]。寫value裏,得到的結果是 d.get(‘name‘[,‘guess‘])
        value
        d.items() 以列表返回可遍歷的(鍵, 值) 元組數組 d.items()
        d.keys() 以列表返回一個字典所有的鍵 d.keys()
        d.values 以列表返回一個字典所有的值 d.values()
        d.pop(key[,value]) 刪除字典中的key及對應的值,同 del d[key] d.pop(‘name‘[,‘halberd‘])
        d.popitem() 此方法不需要任何參數,默認刪除最後一個key:value. 返回的 d={‘name‘:‘halberd‘,‘age‘:2,‘gender‘:‘male‘}
        是被刪除的key 及對應的value,以元組形式返回,但是如果是空 d.popitem()
        字典,則返回錯誤信息
        d.setdefault(key[,value])) 返回key對應的值,但是如果key在原字典中不存在,則追加 d.setdefault(‘gender‘,‘male‘)
        如果key不存在,並且沒有提供對應的value,則默認是‘None‘
        d.update() 1. 合並字典。比如dict1與dict2 dict1.update(dict2)會將 d2={‘gender‘:‘male‘}
        dict2 的內容合並至dict1,如果dict2包含於dict1,則無變化 d.update(d2)
        2. dict1使用update將其他類型的數據,以字典key:value的形 d.update(work=‘IT-migrant-worker‘,married=‘NO‘)
        式合並到dict1中 d.update(([‘work‘,‘IT-migrant-worker‘],[‘married‘,‘NO‘]))
        d.update([(‘work‘,‘IT-migrant-worker‘),(‘married‘,‘NO‘)])
        d.update(zip((‘work‘,‘married‘),(‘IT-migrant-worker‘,‘NO‘)))
        d.update(zip([‘work‘,‘married‘],[‘IT-migrant-worker‘,‘NO‘]))
        len(dict) 計算字典key=value的個數 len(d)
        del dict[key] 刪除字典中某一個key 及對應值,同dict.pop(key) del d[‘name‘]
        del dict 刪除字典 del d

python 之 列表與字典