談談Python中pop與remove的用法

来源:https://www.cnblogs.com/yang901112/archive/2019/08/06/11312292.html
-Advertisement-
Play Games

remove() 函數用於移除列表中某個值的第一個匹配項。 remove()方法語法: list.remove(obj) 如果obj不在列表中會引發 ValueError 錯誤,通常先使用count方法查看有多少個obj pop() 函數用於移除列表中的一個元素(預設最後一個元素),並且返回該元素的 ...


remove() 函數用於移除列表中某個值的第一個匹配項。

remove()方法語法:  list.remove(obj)

如果obj不在列表中會引發 ValueError 錯誤,通常先使用count方法查看有多少個obj

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

pop()方法語法:  list.pop(obj=list[-1])

接下來發現網上的另一篇文章貌似說的不是很合理

https://www.jb51.net/article/132501.htm

a_list = ['a', 'b', 'c', 'd', 'e']
b_list = ['b', 'c']
for i in a_list:
    if i in b_list:
        a_list.remove(i)
print(a_list)
# 輸出 ['a', 'c', 'd', 'e']

a_list = ['a', 'b', 'c', 'd', 'e']
b_list = ['b', 'c']
for i in a_list:
    if i in b_list:
        idl = a_list.index(i)
        a_list.pop(idl)
print(a_list)
# 輸出 ['a', 'c', 'd', 'e']

為什麼元素‘c’未被刪除呢?那篇文章說x已經不是原來的x,好吧先看看以下的代碼吧

x = ['a', 'b', 'c', 'd']
print(id(x))
x.remove('b')
print(x)
print(id(x))
# 2071261855944
# ['a', 'c', 'd']
# 2071261855944

y = ['a', 'b', 'c', 'd']
print(id(y))
y.pop(2)
print(y)
print(id(y))
# 2071261858056
# [1, 2, 4]
# 2071261858056

這很明顯經過remove與pop刪除元素之後,地址並沒有改變,所以應該不是重新賦值。

針對使用for迴圈刪除元素來談一談個人看法,為了方便表達,直接解釋代碼,如下

a_list = ['a', 'b', 'c', 'c', 'd', 'e']
# 在元素‘c’後面又增加一個‘c’

b_list = ['b', 'c']
for i in a_list:
    if i in b_list:
        a_list.remove(i)
print(a_list)
# 依然輸出 ['a', 'c', 'd', 'e'] ,這說明
# 當remove刪除‘b’元素時第一個‘c’移動到‘b’的位置
# 第二遍迴圈遍歷時for迴圈是從上一次迴圈的下個索引位置開始的
# 此時就刪除了第二個‘c’,第一個“逃過一劫”

a_list = ['a', 'b', 'c', 'c', 'd', 'e']
# 在元素‘c’後面又增加一個‘c’

b_list = ['b', 'c']
for i in a_list:
    if i in b_list:
        idl = a_list.index(i)
        a_list.pop(idl)
print(a_list)
# 同樣輸出 ['a', 'c', 'd', 'e']
# 原理同remove相同

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、生活場景 基於建造者模式,描述軟體開發的流程。 1、代碼實現 2、代碼結構圖 二、建造者模式 1、基礎概念 建造模式是對象的創建模式。建造模式可以將一個產品的內部屬性描述與產品的生產過程分割,從而可以使一個建造過程生成具有不同的內部表象的產品對象。也就是使用一個中介對象封裝一系列的對象交互,使其 ...
  • 一. 數據類型轉換 1.1 自動類型轉換 又叫:隱式類型轉換 概念:數據範圍小的類型能自動轉換成數據範圍大的類型 byte short int long float double 1.2 強制類型轉換 概念:將數據範圍大的類型使用指定格式轉換成數據範圍小的類型 格式:範圍小的數據類型 變數名 = ( ...
  • Ural 1029 Ministry 題解 [TOC] 題意 給定一個$n\times m(1\le n \le10,1\le m \le500)$的矩陣,矩陣中的每個值都是一個小於等於$10^9$的正整數。 現在從第$1$行的任意位置開始,在第$n$行的任意位置結束。每次有$3$種移動選擇(不能移 ...
  • 上班有一周了,聊一聊在大廠上班的一點感受和學到的一些東西。 1.吃飯也有江湖 入職那天去了周圍的一家早餐點,看了一眼價格,不得不說帝都著外面的店真的貴啊,半根油條6塊錢,一碗豆漿5塊錢,一根烤腸5塊錢,隨隨便便一頓早飯就15 20塊了,瑟瑟發抖。。。平時午餐點個外賣的話算上餐盒費和送餐費,一個外賣大 ...
  • 目錄 [隱藏] 0.1 前言: 0.2 界面 0.3 Maven 環境 0.4 項目結構 0.5 整合 Hibernate 0.5.1 SQLiteDialect.java 資料庫方言代碼 0.5.2 hibernate.cfg.xml Hibernate配置文件 0.6 項目初始化連接資料庫自動建 ...
  • 面向對象 Go語言開發者認為:面向對象就是特定類型(結構體)有著自己的方法,利用這個方法完成面向對象編程, 並沒有提封裝、繼承、多態。所以Go語言進行面向對象編程時,重點在於靈活使用方法。 Go語言有著自己對面向對象的理解,它也有著自己的封裝、繼承、多態。 5.1.封裝 實例 5.2.繼承 5.3. ...
  • 作者:黃小斜 來源:http://suo.im/5eJuQZ 我來阿裡,已經幾個月了。這段時間,最大的感受就是累。我是在今年的三月份加入阿裡的。 當初我沒有參加阿裡巴巴的實習,而是選擇了直接進行校園招聘,這也是因為當時我對實習的部門不感興趣,於是在校招的時候我就選擇了自己感興趣的部門,也就是現在我所 ...
  • Windows系統下同時安裝Python2和Python3 說明 有時由於工作需求我們需要在Python2版本下麵進行一些開發,有時又需要Python3以上的版本,那麼我們怎麼在一臺電腦上同時安裝多個Python版本呢? 下載 兩個版本的Python可以在官網上下載:https://www.pyth ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...