<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • python中map函數的用法(Python列表常用操作小技巧)


    1 前言

    在上一篇文章中,我們回顧了Python元組常用操作小技巧,這篇文章我們繼續聊聊Python里另一種常用的數據類型 – 列表(List)。

    和元組一樣,列表也是一種序列,通過方括號[和]即可創建。列表中的值常被稱為元素,元素的數據類型可以不同,如test_list = [0,1,1,’a’,’b’]就能成功創建一個列表。

    不同于元組,列表是可變序列,因此序列可用的操作會更加靈活,接下來我們來回顧列表最常用的操作。

    2 列表常用操作

    2.1 遍歷列表

    以列表people = [‘Adam’,’Nick’,’Tony’]為例,可以使用for循環進行遍歷:

    for i in people:
      print(i)

    當需要更新列表時,使用下標遍歷會更加方便:

    for i in range(len(people)):
      people[i] += '_suffix'

    2.2 切片

    和元組一樣,可以通過切片來獲取列表的元素(Python的下標從0開始計算):

    print(people[:2])

    輸出為:

    ['Adam','Nick']

    2.3 刪除元素

    a. pop方法可以返回要刪除的值,可以使用下標進行刪除,或者刪除最后一個元素:a = people.pop(2)或者a = people.pop(),a的值都將是’Tony’,而原列表將會刪除對應的元素。

    b. 如果你不需要使用刪除的值,del是一個好辦法:del people[0],則people列表將變為[‘Nick’,’Tony’]。

    c. remove方法將刪除列表中第一個所需刪除的元素,如進行test_list.remove(1)操作后,列表將變為test_list = [0,1,’a’,’b’],注意,remove方法不返回任何值。

    2.4 列表和字符串

    列表和字符串能夠靈活地進行轉換,比如將字符串轉化為列表:

    # 將字符串轉化為列表
    name = 'Adam is very cool'
    name_list_1 = list(name)
    print(name_list_1)
    
    # Split 方法能使用分隔符分割字符串
    name_list_2 = name.split()
    print(name_list_2)

    輸出為:

    ['A', 'd', 'a', 'm', ' ', 'i', 's', ' ', 'v', 'e', 'r', 'y', ' ', 'c', 'o', 'o', 'l']
    ['Adam', 'is', 'very', 'cool']

    而有時需要將列表合并成一個字符串,join方法非常好用:

    # 用空格連接列表的元素,組成一個新的字符串
    print(' '.join(['Adam', 'is', 'very', 'cool']))

    輸出為:

    'Adam is very cool'

    2.5 列表的別名

    這是一個容易出錯的點,下列代碼中,兩個變量是完全一樣的,改變一個,另一個的值也會跟著改變:

    # alias是列表name的別名
    name = ['Adam', 'is', 'very', 'cool']
    alias = name
    alias.pop()
    print(name)

    輸出為:

    ['Adam', 'is', 'very']

    因此,希望使用兩個獨立的列表時,盡量使用單獨的賦值語句或者淺復制:

    name = ['Adam', 'is', 'very', 'cool']
    
    # 創建值一樣的列表
    name_2 = ['Adam', 'is', 'very', 'cool']
    # 淺復制
    name_3 = name[:]

    2.6 列表參數

    元組可以通過*運算符作為參數傳入函數中,列表也可以作為參數輸出到函數中,此時函數會得到列表的一個引用,意味著如果函數中對列表進行了修改,那么原列表也將被修改,示例如下:

    #定義一個函數,刪除列表的第一個元素
    def del_head(t):
      del t[0]
    
    name = ['Adam', 'is', 'very', 'cool']
    del_head(name)
    print(name)

    輸出為:

    ['is', 'very', 'cool']

    參數t和變量name指向同一個列表,因此當t變化時,name也變化了。這個知識點十分重要,在編寫函數時,要非常注意操作是否會創建一個新的列表,還是在原有列表上作變化。

    2.7 映射和列表推導式

    如果想通過一個函數對列表進行操作,映射(map)和列表推導式是很好的選擇。Python提供的內置函數map接收兩個參數 – 映射函數和迭代對象,返回一個迭代對象,示例如下:

    # 返回元素的平方
    def square(n):
        return n*n
    
    test_list = [1,2,4,5]
    result = map(square, test_list)
    print(result)
    print(list(result))

    輸出為:

    <map object at 0x1101b9400>
    [1, 4, 16, 25]

    使用列表推導式也可以完成上述操作:

    test_list = [1,2,4,5]
    result = [i*i for i in test_list]
    print(result)

    輸出為:

    [1, 4, 16, 25]

    3 總結

    上述知識基本概括了列表的常見操作,簡單總結一下經驗:

    • 大部分列表方法都是修改參數并返回None,一定要注意選擇合適的方法,確保變量的安全性。
    • 實現同一種操作有很多種辦法,有時用錯誤的方法不會報錯,但結果有可能不對,確保理解了個中差異后再選擇合適的方法。
    • 謹慎使用列表的別名,其實不止列表,其他的數據類型也會有別名的機制。

    希望這些知識點對你有幫助,來一道leetcode算法題鞏固一下列表知識吧,歡迎在評論區留下你的答案!下次我們將聊聊字典(Dict)。

    題目:旋轉數組

    給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數。示例:

    輸入: nums = [1,2,3,4,5,6,7], k = 3
    輸出: [5,6,7,1,2,3,4]
    解釋:
    向右旋轉 1 步: [7,1,2,3,4,5,6]
    向右旋轉 2 步: [6,7,1,2,3,4,5]
    向右旋轉 3 步: [5,6,7,1,2,3,4]
    
    
    

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费