詳解Python中的List 2
list比tuple多瞭這些操作支持
前面學委提到tuple(元組)就是焊死瞭的一串串車廂,list支持元素編輯,明顯靈活多瞭。
我們先看看刪除操作,python中的list就支持瞭3中刪除元素的操作。
假設我們定義一個列表對象 list_obj, 那麼我們可以執行下面任意一個操作,進行元素刪除。
del list_obj[下標] list_obj.remove(某個元素值) list_obj.pop(下標) #返回元素值
好,我們看看下面完整代碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/31 10:36 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學委 # @XueWeiTag: CodingDemo # @File : list_demo4.py # @Project : hello # 刪除列表元素 mylist = [1, 0, 2, 4, "雷學委"] print("mylist:", mylist) del mylist[0] print("after remove first element, mylist:", mylist) mylist.remove("雷學委") print("after remove first element, mylist:", mylist) removed_value = mylist.pop(1) # 移除並返回的元素值 print("after remove first element, mylist:", mylist) print("removed value:", removed_value)
效果如下:
特別需要註意的是:刪除元素不能超過list的下標范圍,否則報錯!
除瞭刪除,list怎麼添加/擴充元素呢?
先不說修改的,list也支持定位查找元素,我們先看看。
list_obj.index(某個元素值) #通過某個元素值定位到第一個匹配的下標,從0位置開始找。
假設list_obj = [3, 2, 1]
那麼list_obj.index(2)
則是什麼?
答案是:1。
好,我們繼續說插入新元素。
# python中的list支持下面兩種方式追加元素 list_obj.insert(指定下標, 元素) list_obj.append(元素) #末尾追元素
那麼一次性追加多個,或者直接擴充某個列表到現有列表呢?
我們找到瞭extend函數,使用list_obj.extend(補充列表) 就能把list_obj直接擴充瞭,效果是依次追加補充列表的元素到末尾。
說這麼多操作,我們直接復制運行下面的代碼看看:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/31 10:36 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學委 # @XueWeiTag: CodingDemo # @File : list_demo5.py # @Project : hello # 列表的其他函數 mylist = [6, 6, 6] print("mylist:", mylist) mylist.append("雷學委") print("mylist:", mylist) print("列表多少個6?:", mylist.count(6)) print("第一個6的位置下標?:", mylist.index(6)) mylist.insert(2, 1024) print("第一個1024的位置下標?:", mylist.index(1024)) last = mylist.pop() #刪除操作前面說過瞭,這幾舉例一個。 print("最後的元素是:",last) print("mylist:", mylist) # 直接追加新列表 mylist.extend(mylist) # 相當於mylist = mylist * 2 print("mylist:", mylist) mylist.extend(['持續學習', '持續開發']) print("mylist:", mylist)
這是代碼運行效果:
非常簡便,我們繼續看看列表元素排序
list的排序
前面說的都是編輯操作,list也可以進行數據排列,也就是按照一定邏輯進行順序排列。
list提供瞭一個sort函數和reverse函數。
先說簡單的,reverse函數相當於把整個串串車廂直接調頭。也就是list:[1,2,3]
經過reverse函數處理後,變成瞭[3,2,1]。
sort則更加彈性,默認安裝元素面值(比如數字,數字串),還支持傳入一個lambda函數,指定排序邏輯。
以上函數默認會對一個數字組成的數組進行按數字面值大小排序
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/31 10:36 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學委 # @XueWeiTag: CodingDemo # @File : list_demo6.py # @Project : hello # 列表的其他函數 mylist = [2, 3, 1] #mylist = ["2", "3", "1"] mylist.sort() print("mylist:", mylist) mylist.extend(['持續學習', '持續開發']) print("mylist:", mylist) mylist.sort(key=lambda e: len(str(e)), reverse=True) print("sorted mylist:", mylist) mylist.reverse() print("reversed mylist:", mylist)
效果如下,讀者可以仔細看看是否如學委所說。
特別註意:學委上面示例代碼也展示瞭,如果一個列表內元素不是同一類型(都是數字,都是字符串或者都是某個類型),開發者必須實現一個lambda函數給sort函數作為參考進行排序。
總結
list有很多功能,進行元素的操作(添加/刪除/定位)等非常方便。
而且還能輕易擴充,排序,逆序等,這讓list的使用非常廣泛
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!