Python學習筆記之列表

什麼是列表?
列表是序列類型中的一種數據結構。使用中括號[]包裹的一系列數據元素的集合。
如何定義一個列表?
一般形式:

x = [] 或 y = [元素1,元素2,元素3,...] 或 z = [None] 或 m = list()  # 使用工廠函數list創建一個空列表
列表的特點:
a、用[]包裹;
b、元素間用逗號‘,’分隔;
c、元素的類型可以是任意的數據類型(如:數值,字符串,列表,元祖,字典等等);
d、元素是有序排列的,可以通過索引和分片(切片)來獲取某個元素值。
列表的常見操作:
1、通用序列操作:
A、索引
(正向索引是從0開始計數的,反向索引是從-1開始的)
  操作符:[]
  一般形式:
    [元素1,元素2, 元素3, 元素4,... , 元素n-1, 元素n]
正--->  0     1       2       3             n-2     n-1
          -n   -n+1    -n+2     -n+3  ...       -2     -1  <---反 
   如: alist = [123, 'name', ['age', 'male']]
        ①正向索引(從左向右):
        alist[0] ---> 123 
        alist[1] ---> name
        alist[2] --->['age', 'male']
       ②反向索引(從右向左)
       alist[-1] ---> ['age', 'male']
       alist[-2] ---> name
       alist[-3] ---> 123

B、分片(切片,連續取一片值,返回一個列表)
  操作符:[:] 或 [::]
  特點:
  a、顧頭不顧尾(即分片取值的時候,包括第一個start_index索引號對應的值,不包括end_index索引號對應的值)
  b、start_index對應的元素比end_index對應的元素出現的晚並且是正向索引的話,結果就是一個空序列。
    一般形式:
    [start_index : end_index] 或 [start_index : end_index : step_value]
如: alist = [123, 'name', ['age', 'male'], ('name', 'age')]
   ①正向索引(從左向右):
         alist[0:1] ---> [123]
         alist[1:3] ---> ['name', ['age', 'male']]
         alist[:]   ---> [123, 'name', ['age', 'male'], ('name','age')]
         alist[-3:-1] ---> [123, ['age', 'male']
         alist[0:-1] ---> [123, 'name', ['age', 'male']]
         alist[0:3:2] ---> [123, ['age', 'male']]  # 更大的步進
         alist[::4] ---> [123] #步進超出索引
  ②反向索引(從右向左)
         alist[::-1] ---> [('name', 'age'), ['age', 'male'], 'name',123]
         alist[3:0:-1]  ---> [('name', 'age'), ['age', 'male'], 'name']
         alist[-1:-3:-1] ---> [('name, 'age'), ['age', 'male']]
         alist[-1:0:-1] ---> [('name', 'age'), ['age', 'male'], 'name']
         alist[2:0:-1] ---> [['age', 'male'], 'name']
         alist[-1:-4:-2] ---> [('name', 'age'), 'name']# 更大的步進
         alist[-1:-4:-4] ---> [('name', 'age')] #步進超出索引範圍
 
C、列表相加 '+'
  操作符: +
  功能特點:
  把兩個列表的元素組合在一起,生產一個新列表。
  x = [1,2,3]
  y = [4,5,6]
  x + y ---> [1,2,3,4,5,6] 
  m = ['name',[123,'male'],('age', 'hat')] 
  n = [12, ('men', 'data'), '40']  
  m + n = ['name', [123, 'male'], ('age', 'hat'), 12, ('men', 'data'), '40']
  
D、列表相乘 '*'或叫重複操作符
  操作符: *
  一般形式:[]*n
  功能特點:
  生成一個新列表,原有的列表數據被重複n次。
  如:alist = ['name', 'age']*3 ---> ['name', 'age', 'name', 'age', 'name', 'age']
  
F、成員資格
  操作符:in 和 not in
  一般形式: 'name' in ['name', 'male'] 或 'man' not in ['name', 'male']
  功能特點: 檢查某個值是否在列表中。是返回True,否返回False。
  如:
  'name' in ['name', 'male'] ---> Ttrue
  'name' not in ['name', 'male'] --->False
  'age' in ['name', 'male'] ---> False
  'age' not in ['name', 'male'] ---> True
  
G、長度、最小值、最大值
  操作符:len()、min()、max()
  一般形式:len(object)、min(object)、max(object)
  功能特點:
  len(object) ---> object的長度
  min(object) ---> object的最小值
  max(object) ---> object的最大值
  如:
  len(['name', 'age', ['male', 123], 123]) ---> 4  # 返回列表元素個數
  len('hello world') ---> 11  # 返回字符串的字符數量
  min(['name', 'age', ['male', 123], 123]) ---> 123 
  min('hello world') ---> ' '
  min(4,1,3,0,9) ---> 0
  min('a',1,'l','k',9) ---> 1
  max(['name', 'age', ['male', 123], 123]) ---> 'name'
  max('hello world') ---> 'w'
  max(4,1,3,0,9) ---> 9
  max('a',1,'l','k',9) ---> 'l'
  
2、列表更新:更改元素值
  操作符: =
  一般形式: alist[index] = 更改後的值 或 alist[start_index:end_index:step_value] = (value1, value2, ...)/[value1, value2, ...]
  功能特點:
  通過在等號'='的左邊指定一個索引或索引範圍的方式來更改一個或幾個元素的值,或者叫元素賦值和分片賦值
  注意點:
  a、alist[index] = 更改後的值 這種形式更改值時,若index超出了列表本身索引範圍時,會發生異常(IndexError: list assignment index out of range):
        >>> alist = [1,2]
        >>> alist
        [1, 2]
        >>> alist[2]=3

        Traceback (most recent call last):
            File "<pyshell#28>", line 1, in <module>
            alist[2]=3
        IndexError: list assignment index out of range
  b、alist[start_index:end_index:step_value] = (value1, value2, ...)/[value1, value2, ...] 更改列表元素值時,
        若索引範圍元素個數小於或大於更改後值的個數時,將更改後的值以開始的索引把更改後的值插入到列表中。
        ①小於的情況
>>> alist
        [1, 2]
        >>> alist[0:2] = [7,8,9,0]
        >>> alist
        [7, 8, 9, 0]

>>> alist = [1,2]
        >>> alist
        [1, 2]
>>> alist[0:1] = [7,8,9,0]
        >>> alist
        [7, 8, 9, 0, 2]
        ②大於的情況  
>>> alist = [1,2,3,4,5,6]
        >>> alist
        [1, 2, 3, 4, 5, 6]
        >>> alist[0:3] = [8,9]
>>> alist
        [8, 9, 4, 5, 6]
  
3、列表更新:刪除元素
  操作函數:del 或 alist[:] =[] 分片賦值方法
  一般形式:del alist[index] 或 del alist[:] 或 del alist
  功能特點:
    刪除某個元素值或列表
  如:
    >>> alist
    [8, 9, 4, 5, 6]
    >>> del alist[0]
    >>> alist
    [9, 4, 5, 6]

>>> alist = [8,9,4,5,6]
    >>> alist
    [8, 9, 4, 5, 6]
    >>> del alist[0:2]
>>> alist
    [4, 5, 6]

    >>> del alist
    >>> alist

    Traceback (most recent call last):
      File "<pyshell#48>", line 1, in <module>
       alist
    NameError: name 'alist' is not defined

4、列表的內建方法

  a、alist.append()  # 在列表的末尾追加新對象,接受一個參數
    >>> alist = [1,2,3]
    >>> alist.append(4)
    >>> alist
    [1, 2, 3, 4]
    
  b、alist.count()  # 統計某個元素在列表中出現的次數,接受一個參數
    >>> alist = [[1,2], 1,1,[2,1,[1,2]]]
    >>> alist.count(1)
    2
    >>> alist.count([1,2])
    1
  c、alist.extend()  # 在列表的末尾一次性追加另一個序列中的多個值,接受一個參數
    >>> alist = [1,2,3]
    >>> alist1 = [4,5,6]
    >>> alist.extend(alist1)
    >>> alist
    [1, 2, 3, 4, 5, 6]
    
  d、alist.index(value, [start,[stop]])  # 此方法用於從列表中找出某個值第一個匹配項的索引位置,如果不存在,則引發ValueError異常。start/stop指定在查找的索引範圍。
    >>> alist = ['name', 'age', 'male']
    >>> alist.index('age')
    1
    >>> alist.index('male')
    2
    >>> alist.index('allen')

    Traceback (most recent call last):
        File "<pyshell#6>", line 1, in <module>
            alist.index('allen')
    ValueError: 'allen' is not in list
    
  e、alist.insert(index, object)  # 在指定的索引位置插入對象。此方法也可以用分片賦值的方式來實現。
    >>> alist = ['name', 'age', 'male']
    >>> alist.insert(1,'allen')
    >>> alist
    ['name', 'allen', 'age', 'male']
    
  f、alist.pop([index])  # 移除並返回指定索引位置的值,默認移除並返回最後一個列表元素。如果列表爲空或指定的索引值超出了alist的索引範圍,則引發一個IndexError。
     >>> alist = ['name', 'age', 'male']
    >>> alist.pop()
    'male'
    >>> alist
    ['name', 'age']
    >>> alist.pop(1)
    'age'
    >>> alist
    ['name']
    >>> alist = []
    >>> alist.pop()

    Traceback (most recent call last):
        File "<pyshell#23>", line 1, in <module>
            alist.pop()
    IndexError: pop from empty list 
    
  g、alist.remove(value)  # 移除列表中第一個出現的value元素,如果value不存在,則引發ValueError。
    >>> alist = ['name', 'age', 'male', 'age']
    >>> alist.remove('age')
    >>> alist
    ['name', 'male', 'age']
    >>> alist.remove('allen')

    Traceback (most recent call last):
        File "<pyshell#29>", line 1, in <module>
            alist.remove('allen')
    ValueError: list.remove(x): x not in list
    注意:remove方法是一個沒有返回值的原位置改變方法。
    
  h、alist.reverse()  # 將列表中的元素反向存放(或叫排序)
>>> alist = ['name', 'age', 'male']
    >>> alist.reverse()
    >>> alist
    ['male', 'age', 'name']
    注意:reverse方法也改變了列表但不返回值。
    
  i、alist.sort(cmp=None, key=None, reverse=False)  # 在原位置對列表進行排序(注:會改變原來的列表)。
>>> alist = ['name', 'age', 'male']
    >>> alist.sort()
    >>> alist
    ['age', 'male', 'name']

5、列表的內建函數
  a、cmp(x, y)  # 若x<y 返回 -1,若x==y 返回 0 ,若x>y 返回 1。
     比較算法:
        對兩個列表的元素進行比較;
        如果比較的元素是同類型的,則比較其值,返回結果;
        如果兩個元素不是同一類型,則檢查它們是否是數字:
            如果是數字,執行必要的數字強制類型轉換,然後比較;
            如果有一方的元素是數字,則另一方的元素“大”(數字是“最小的”);
            否則,通過類型名字的字母順序進行比較;
        如果有一個列表首先達到末尾,則另一個長一點的列表“大”;
        如果我們用盡了兩個列表的元素而且所有元素都是相等的,那麼結果就是返回一個0.
        
  b、len()  # 返回列表的元素個數。
    >>> alist = ['name', 'age', 'male']
    >>> len(alist)
    3
    
  c、max() 和 min()  #返回列表元素的最大值和最小值。
  d、sorted(iterable, cmp=None, key=None, reverse=False)  # 對iterable進行排序並返回列表的副本,不會改變原列表。
    >>> alist = ['name', 'age', 'male']
    >>> sorted(alist)
    ['age', 'male', 'name']
    >>> alist
    ['name', 'age', 'male']
    
  e、reversed()  # 對列表進行反向排序,返回一個迭代對象,用list()函數這個迭代對象轉換成一個列表。
    >>> alist = ['name', 'age', 'male']
    >>> reversed(alist)
    <listreverseiterator object at 0x0000000002A65B70>
    >>> list(reversed(alist))
    ['male', 'age', 'name'] 
    
  f、enumerate()  # 返回一個可迭代對象的索引和值。
    >>> alist = ['name', 'age', 'male']
    >>> enumerate(alist)
    <enumerate object at 0x0000000002A567E0>
    >>> list(enumerate(alist))
    [(0, 'name'), (1, 'age'), (2, 'male')]
    >>> for i, j in enumerate(alist):
print i,j

    0 name
    1 age
    2 male
    
  g、zip()  # zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
    >>> alist = ['name', 'age', 'male']
    >>> alist1 = ['allen', 40, 'man']
    >>> zip(alist, alist1)
    [('name', 'allen'), ('age', 40), ('male', 'man')]
    
    >>> for m, n in zip(alist, alist1):
print m,n
    name allen
    age 40
    male man
    
  h、sum()  # sum(sequence[, start]) -> value ;star 默認值爲0,如果列表爲空,返回start。
    >>> alist = [1,2,3,4]
    >>> sum(alist)
    10
    >>> sum(alist, 1)
    11
    >>> alist=[]
    >>> sum(alist)
    0
    >>> sum(alist, 4)
    4
    
  i、list()  #創建或轉換一個可迭代對象爲列表。
    >>> x = list()
    >>> x
    []
    >>> y = list('hello world')
    >>> y
    ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
    
發佈了58 篇原創文章 · 獲贊 24 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章