Python: list列表的11個內置方法

来源:https://www.cnblogs.com/123456feng/archive/2022/04/23/16178845.html
-Advertisement-
Play Games

前言 在實際開發中,經常需要將一組(不只一個)數據存儲起來,以便後邊的代碼使用。在VBA中有使用數組,可以把多個數據存儲 到一起,通過數組下標可以訪問數組中的每個元素。Python 中沒有數組,但是加入了更加強大的列表(list)。下麵就對列表的內 置方法進行介紹。 通過dir(list)可以查看列 ...


前言

在實際開發中,經常需要將一組(不只一個)數據存儲起來,以便後邊的代碼使用。在VBA中有使用數組,可以把多個數據存儲

到一起,通過數組下標可以訪問數組中的每個元素。Python 中沒有數組,但是加入了更加強大的列表(list)。下麵就對列表的內

置方法進行介紹。

在這裡插入圖片描述

通過dir(list)可以查看列表的屬性和內置方法。
print(dir(list))
Python學習交流Q群:906715085###
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

 

可以看出,列表有11個內置方法。
1  append()、extend()、insert()方法

2  clear()、remove()、pop()方法 

3  count()、index()方法

4  sort()、reverse()方法

5  copy()方法 

在這裡插入圖片描述

1 append()、extend()、insert()方法

list.append(obj)

obj – 表示到添加到列表末尾的數據,它可以是單個元素,也可以是列表、元組等。

在列表的末尾追加元素。

Python學習交流Q群:906715085###
list1 = ['Python', 'C++', 'Java']

# 追加元素
list1.append('PHP')
print(list1)

#追加元組,整個元組被當成一個元素
t = ('JavaScript', 'C#', 'Go')
list1.append(t)
print(list1)

#追加列表,整個列表被當成一個元素
list1.append(['Ruby', 'SQL'])
print(list1)

 

['Python', 'C++', 'Java', 'PHP']
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go')]
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go'), ['Ruby', 'SQL']]

 


	list.extend(seq)

seq – 元素列表,可以是列表、元組、集合、字典,若為字典,則僅會將鍵(key)作為元素依次添加至原列表的末尾。

在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)。

extend() 和 append() 的不同之處在於:extend() 不會把列表或元組視為一個整體,而是把它們包含的元素逐個添加到列表中。

Python學習交流Q群:906715085###
list2 = ['Python', 'C++', 'Java']

# 追加元素
list2.extend('C')
print(list2)

# 追加元組,元祖被拆分成多個元素
t = ('JavaScript', 'C#', 'Go')
list2.extend(t)
print(list2)

# 追加列表,列表被拆分成多個元素
list2.extend(['Ruby', 'SQL'])
print(list2)

 

['Python', 'C++', 'Java', 'C']
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go']
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go', 'Ruby', 'SQL']

 

list.insert(index, obj)

index – 對象obj需要插入的索引位置。

obj – 要插入列表中的對象。

將指定對象插入列表的指定位置。

list3 = ['Google', 'Runoob', 'Taobao']

list3.insert(1, 'Baidu')
print ('列表插入元素後為 : ', list3)
列表插入元素後為 : ['Google', 'Baidu', 'Runoob', 'Taobao']

 

在這裡插入圖片描述

2 clear()、remove()、pop()方法

list.clear()

清空列表,類似於del a[:]。

list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list2 = ['Google', 'Runoob', 'Taobao', 'Baidu']

list1.clear()
del list2[:]

print("列表清空後的list1: ", list1)
print("列表清空後的list2: ", list2)
列表清空後的list1: []
列表清空後的list2: []
list.remove(obj)

 

移除列表中某個值的第一個匹配項。

list1 = ['Google', 'Baidu', 'Runoob', 'Taobao', 'Baidu']

list1.remove('Taobao')
print ("列表現在為 : ", list1)

list1.remove('Baidu')
print ("列表現在為 : ", list1)
列表現在為 : ['Google', 'Baidu', 'Runoob', 'Baidu']
列表現在為 : ['Google', 'Runoob', 'Baidu']
list.pop([index=-1])

 

index – 可選參數,要移除列表元素的索引值,不能超過列表總長度,預設為 index=-1,刪除最後一個列表值。

移除列表中的一個元素(預設最後一個元素),並且返回該元素的值。

list1 = ['Google', 'Runoob', 'Taobao']

print(list1.pop())
print ("列表現在為 : ", list1, end="\n\n")

print(list1.pop(0))
print ("列表現在為 : ", list1)
Taobao
列表現在為 : ['Google', 'Runoob']

Google
列表現在為 : ['Runoob']

 

3 count()、index()方法

list.count(obj)

統計某個元素在列表中出現的次數。

aList = [123, 'Google', 'Runoob', 'Taobao', 123];

print ("123 元素個數 : ", aList.count(123))
print ("Runoob 元素個數 : ", aList.count('Runoob'))
123 元素個數 : 2
Runoob 元素個數 : 1
list.index(x[, start[, end]])

 

start -- 可選,查找的起始位置。

end --  可選,查找的結束位置。

從列表中找出某個值第一個匹配項的索引位置,如果沒有找到對象則拋出異常。
list1 = ['Google', 'Runoob', 'Taobao', 'Runoob', 'QQ']

print ('Runoob 索引值為', list1.index('Runoob'))
print ('Runoob 索引值為', list1.index('Runoob',2,4))
Runoob 索引值為 1
Runoob 索引值為 3

 

在這裡插入圖片描述

4 sort()、reverse()方法

list.sort( key=None, reverse=False)

 


key -- 指定在進行比較前要在每個列表元素上調用的函數(或其他可調用對象)。

reverse -- 排序規則,reverse = True 降序, reverse = False 升序(預設)。
aList = ['Google', 'Runoob', 'Taobao', 'Facebook']

aList.sort()    # 升序排列
print("List : ", aList)
List : ['Facebook', 'Google', 'Runoob', 'Taobao']
# 獲取序列的第二個元素
def take_second(elem):
    return elem[1]

# 列表
list1 = [(2, 2), (3, 4), (4, 1), (1, 3)]

# 指定第二個元素,升序排列
list1.sort(key=take_second)

# 輸出類別
print('排序後的列表:', list1)
排序後的列表:[(4, 1), (2, 2), (1, 3), (3, 4)]

 

對於排序,Python中還有一個 sorted() 內置函數。兩者的區別在於,list.sort() 方法會直接修改原列表(並返回 None 以避免混

淆),而 sorted() 內置函數會返回一個新的排序後的列表。

student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10)]

new_tuples = sorted(student_tuples, key=lambda student: student[2])   # sort by age

print("排序前:",student_tuples)
print("排序後:",new_tuples)
排序前:[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
排序後:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
list.reverse()

 


對列表的元素進行反向排序。
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.reverse()
print ("列表反向排序後: ", list1)

 

列表反向排序後: ['Baidu', 'Taobao', 'Runoob', 'Google']

5 copy()方法

list.copy()

複製列表,類似於 a[:]。

註意:list.copy()方法所遵循的拷貝原理,是淺拷貝,也就是說,只拷貝父對象,不會拷貝對象內部的子對象。關於深拷貝和淺拷

貝的更多內容,參見

文末的延伸閱讀[1]。

a = [1, 2, [3, 4], 5, 6]
b = a.copy()

a.append(7)
a[2][1] = 10

print("a = ", a)
print("b = ", b)
a = [1, 2, [3, 10], 5, 6, 7]
b = [1, 2, [3, 10], 5, 6]

 

可以看出,列表a中新增元素,對列表b沒有影響;但是如果修改了a中的列表對象,同樣也會影響到b。

在這裡插入圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近沉寂的太久了,只為了給大家準備這一套試題,這大概是全網最全面的了,各位學這麼久Python,檢驗學習成果的時間到了!! 話不多說我們直接開始把! 一、填空題 001、Python安裝擴展庫常用的工具是lxx__lxx__和conda,其中後者需要安裝Python集成開發環境Anaconda3之後 ...
  • C++-類與對象(2)-繼承 繼承 一個小引子 有些類之間存在特殊的關係,像下麵的圖一樣: 定義這些類時,下級的成員除了有向上一級類的共性,還有自己的特性,這時,就可以用繼承的技術,減少代碼的重覆 繼承的基本語法 class 子類 : 繼承方式 父類 子類:也叫派生類 父類:也叫基類 #includ ...
  • 20212217劉恆謙 《Python程式設計》實驗三報告 代碼鏈接: 伺服器 客戶端 課程:《Python程式設計》 班級: 2122 姓名: 劉恆謙 學號:20212217 實驗教師:王志強 實驗日期:2022年4月23日 必修/選修: 公選課 1.實驗內容 利用socket進行網路通信,併在客 ...
  • 14-Reference & Value Semantics、 Pointers vs Values、 Loop Gotcha ...
  • 前言 圖像是 Web 應用中除文字外最普遍的媒體格式。 流行的 Web 靜態圖片有 JPEG、PNG、ICO、BMP 等。動態圖片主要是 GIF 格式。 為了節省圖片傳輸流量,大型互聯網公司還會定製特殊格式的圖片,WEBP 格式就是一個代表。 Python 除了數據分析,做圖片處理也是非常好用的。 ...
  • 前言 在一個Web應用中,通常會採用MVC設計模式實現對應的模型、視圖和控制器,其中,視圖是用戶看到並與之交互的界面。對最初的Web應用來說,視圖是由HTML元素組成的靜態界面;而後期的Web應用更傾向於使用動態模板技術,從而實現前後端分離和頁面的動態數據展示。Spring Boot框架為簡化項目的 ...
  • 最近的項目搗鼓msp430需要用到dac轉換以輸出模擬信號,項目代碼是接手前同事的 有些地方調試不通,以前沒有接觸過msp430晶元,更是沒搞過這種晶元io口時序驅動層的東西,甚至純c的都是頭一次作為工作正式用。沒辦法 萬事開頭難嘛 ,硬著頭皮網上到處翻資料 找晶元的手冊 找dac外設的寄存器說明, ...
  • 當我們電腦裡面的文本或者或者文件夾太多了,有時候想找到自己想要的文件,只能通過去搜索文件名,要是名字忘記了的話,那你也搜不了吧,當然你可通過尾碼名去搜索,但是通過搜索出來的文件只會更多,這還只是文件多的情況下。 如果文件名字基本一樣,只有序號不一樣呢?那特麽眼睛看瞎了估計還沒找到。 那麼我們可以用P ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...