03列表、列表推導式及zip()函數

一、列表內元素的獲取
  列表[0]       數字索引位置   通過此可對列表元素進行調換
>>> empty = [0,1,2,['小兒子','小西瓜'],4]
>>> a = empty[3][1]
>>> print(a)
小西瓜

二、列表的刪除
1 remove()
    member.remove('元素名')

2 del       (del爲語句,並非函數BIF)
>>> member = ['大傻子','二傻子','三傻子','四傻子']
>>> del member[2]
>>> member
['大傻子', '二傻子', '四傻子']
>>> del member
>>> member
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    member
NameError: name 'member' is not defined

3 pop()   (member.pop()默認刪除列表最後一個元素)   (pop操作將抽取元素,有反饋值)



三、列表的分片slice        (對原列表的拷貝,不影響原)
>>> member = ['大傻子','二傻子','三傻子','四傻子']
>>> member[0:2]
['大傻子', '二傻子']
>>> member
['大傻子', '二傻子', '三傻子', '四傻子']
>>> member[:3]
['大傻子', '二傻子', '三傻子']
member[:]    有兩個參數start stop (stop-start=個數  stop索引不包括)
對列表進行分片拷貝


四、列表的元素插入
1 append
  列表名.append('1561')
2 extend        可插入兩個(用一個列表來擴展原列表)
  >>> empty = []
  >>> empty.extend(['大傻子','二傻子'])
  >>> empty
      ['大傻子', '二傻子']
3 insert        插入到原列表的指定位置
  >>> member = ['小小','大大']
  >>> member.insert(1,'中中')
  >>> member
  ['小小', '中中', '大大']

五、常用操作符
1 列表的比較
  只比較第一個元素
2 列表相加
  兩列表進行拼接(類似於extend)
3 列表的乘法
  >>> list1 = [123,456]
  >>> list1 *3
  [123, 456, 123, 456, 123, 456]
4 成員關係操作符
  >>> list1 = [123,456]
  >>> 123 in list1
  True
  >>> 1 not in list1
  True

  >>> list3 = [12,23,34,[1,2,3]]
  >>> 1 in list3[3]
  True
5 與列表相關的BIF
  ①count()  list1.count('元素名')
 
  ②index()     (索引)反饋元素所在位置   只記第一個出現的位置
                   共三個參數 1目標元素 2開始位置 3結束位置  
      >>> list5 = [5,6,1,3,9,2,3,7,3]
      >>> list5.index(3)
      3
      >>> list5 = [5,6,1,3,9,2,3,7,3]
      >>> list5.index(3,4,8)
      6

  ③reverse()    (反轉)將列表元素位置反轉
 
      >>> list2 = [1,2,3,4,5,6]
      >>> list2.reverse()
      >>> list2
      [6, 5, 4, 3, 2, 1]
  ④sort()     排序,默認從小到大
                 共三個參數 前兩個默認,第三個參數爲reverse(默認reverse=False)
      >>> list3 = [35,48,2,0,5,4,8,12]
      >>> list3.sort()
      >>> list3
      [0, 2, 4, 5, 8, 12, 35, 48]
      >>> list3 = [35,48,2,0,5,4,8,12]
      >>> list3.sort(reverse=True)
      >>> list3
      [48, 35, 12, 8, 5, 4, 2, 0]
  ⑤join()
      str.join(list)
    >>> a = [1,2,4,7,9]
    >>> b = ','.join(a)
    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        b = ','.join(a)
    TypeError: sequence item 0: expected str instance, int found
    >>> a = ['1','3','5','7']
    >>> b = ','.join(a)
    >>> b
    '1,3,5,7'
    >>>


6.列表推導式
(1)使用列表推導式實現嵌套列表的平鋪
>>> vec = [[1,2,3],[4,5,6],[7,8,9]]
>>> [num for elem in vec for num in elem]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

(2)矩陣的轉置
>>> mat = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

>>> [[row[i] for row in mat] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

>>> list(zip(*mat))
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

(3)過濾元素
>>> alist = [10,-2,5.6,-9.5,33,-5]
>>> [i for i in alist if i > 0]
[10, 5.6, 33]
>>>

(4)在列表推導式中使用多個循環,實現多序列元素的任意組合,並且可以結合條件語句過濾特定元素。
>>> [(x,y) for x in [1,2,3] for y in range(2,5) if x!=y]
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 2), (3, 4)]
>>>

(5)列表推導式支持文件對象迭代。
f = open('C:\xxxx.txt','r')
print([line for line in f])
f.close()

7.zip()
class zip(object)
    zip(iter1 [,iter2 [...]]) --> zip object
返回[(seq1[0],seq2[0]...),(seq1[1],seq2[1]...),(..)..]形式的列表
將多個列表或元組對應位置的元素組合爲元組,並返回zip對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章