1. 程式人生 > >python裡面pop,remove和del 三者的用法區別

python裡面pop,remove和del 三者的用法區別

首先,remove 是刪除首個符合條件的元素。並不是刪除特定的索引。如下例:

    >>> a = [0, 2, 2, 3] 
    >>> a.remove(2) 
    >>> a 
    [0, 2, 3]

而對於 del 來說,它是根據索引(元素所在位置)來刪除的,如下例:

    >>> a = [3, 2, 2, 1] 
    >>> del a[1] 
    [3, 2, 1] 
第1個元素為a[0] --是以0開始計數的。則a[1]是指第2個元素,即裡面的值2.

  del還可以刪除指定範圍內的值

       a = [3,2,2,1]

        del a[1,3]

        print a

結果[3]

del還可以刪除整個列表

   del a

pop返回的是你彈出的那個數值。

所以使用時要根據你的具體需求選用合適的方法

    >>> a = [4, 3, 5] 
    >>> a.pop(1) 
    3 
    >>> a 
    [4, 5]

另外它們如果出錯,出錯模式也是不一樣的。注意看下面區別:

    >>> a = [4, 5, 6] 
    >>> a.remove(7) 
    Traceback (most recent call last): 
      File "<stdin>", line 1, in <module> 
    ValueError: list.remove(x): x not in list 
    >>> del a[7] 
    Traceback (most recent call last): 
      File "<stdin>", line 1, in <module> 
    IndexError: list assignment index out of range 
    >>> a.pop(7) 
    Traceback (most recent call last): 
      File "<stdin>", line 1, in <module> 
    IndexError: pop index out of range

相關推薦

python裡面popremovedel 三者用法區別

首先,remove 是刪除首個符合條件的元素。並不是刪除特定的索引。如下例: >>> a = [0, 2, 2, 3] >>> a.remove(2) >>> a [0, 2, 3]

c#中陣列ArrayListList 三者區別

在c#中,陣列在記憶體中是連續的,索引速度很快,賦值和修改也很簡單。string[] s=new string[2]; //賦值 s[0]="a"; s[1]="b"; //修改 s[1]="a1"; 但是陣列也有一些不足的地方,在資料的兩個資料

前端面試題(二):ES6中letconst var 三者區別

let命令基本用法 在ES6中,新增了let命令,用於宣告變數,用來取代ES5中var命令,消除var宣告的變數的不合理,不嚴謹之處。const用於宣告常量。 讓我們來看看let和var的區別 1.let不存在變數提升 使用let宣告的變數,不會像

pythonremovepopdel方法的區別

這三種方法都是list的刪除方法,其中remove是針對可變列表的元素進行搜尋刪除,而pop和del是針對可變列表的下標進行搜尋刪除。具體區別如下: 1. remove remove(item)方法是直接對可變序中的元素進行檢索刪除,返回的是刪除後的列表,不

關於RigidbodyColliderCharacterController三者之間的關系用法的總結

詭異 nor 觸發 回調函數 force body 想要 die 實現 Rigidbody:多用在“物體”上,因為“物體”都是“死”的,他們的運動一般都是靠物理系統。所以對於Rigidbody的移動,不要用Translate(),要用各種“力”, 比如:Rigidbody的

Queue介面分析:addoffer區別removepoll方法到底啥區別

往佇列中新增元素有兩個方法,分佈是add和offer方法,兩者的入參和返回值都一樣,或許很多同學都奇怪,為什麼,要有這兩個功能類似(都是新增元素),但方法名不一樣的方法,看看原始碼的註釋 以下為Queue介面中方法定義: ``` public interface Queue<E

Python】splitstripjoin的使用

文章目錄 split才是切割... 值得注意的是,split只能切割字串..不能切割列表,但是切割字元串出來的結果卻是列表... join的使用 join()函式 對字串的操作

分享一些Python裡面的迴圈語句字串、佔位符、列表的基本運用

1.for迴圈和while迴圈的運用和區別 #布林值 isOk=True if isOk==True: print('ok') else: print('no ok') for x in range(100): print(x) #while 當。。。。時候 age=1

python中矩陣維度 (a a 有什麼區別

在python中矩陣維度, (a,)和 a 有什麼區別? 測試: import numpy as np trainx = np.linspace(-1, 1, 10) print(trainx.shape) print(trainx[0].shape) print(*trainx

第二章 Python語法基礎IpythonJupyterNotebooks

2.1 Python直譯器 Python是解釋性語言,直譯器同一時間只能執行一個程式或語句。 2.2 IPython基礎 執行Ipython Shell 執行Jupyter Notebooks Tab補全 自省:?;?? %run命令 中斷執行程式碼:Ctrl-

國外資深程式設計師的Python中類靜態抽象方法的權威總結

Python中方法的工作方式 方法是儲存在類屬性中的函式,你可以用下面這種方式宣告和訪問一個函式 >>> class Pizza(object): ... def __init__(self, size): ...

福利 | 零基礎學習Python量化交易證書工作一起拿 !(深圳)

文末有資料派獨家福利  投資界的人才需求 量化投資在中國已經進入到一個高速發展期。量化人才需求也成為眾多金融企業的關注。金融科技企業發現中國目前正面臨嚴重的金融科技專業人才短缺。而量化分析從業者,俗稱“寬客(Quants)”,正是金融科技人才的領軍者

Python中read()、readline()readlines()三者間的區別用法

前言 眾所周知在python中讀取檔案常用的三種方法:read(),readline(),readlines(),今天看專案是又忘記他們的區別了。以前看書的時候覺得這東西很簡單,一眼掃過,待到用時卻也只知道有這麼幾個方法,不懂得它的原理與用法。也許吧,沒有永遠的記憶,況且根

Python list.pop() | list.remove() 用法詳解

一、list.pop(index) 用於從列表中刪除元素,該語句還能返回被刪除的元素。 注意:index表示該元素的下標。 a = [0,1,2,3,4,5] print a.pop() # 輸出5

C#中數組、ArrayListList三者區別

collect comm 兩個 根據 -s lis 數據打包 功能 target 在C#中數組,ArrayList,List都能夠存儲一組對象,那麽這三者到底有什麽樣的區別呢。 數組 數組在C#中最早出現的。在內存中是連續存儲的,所以它的索引速度非常快,而且賦值

C++知識回顧之__stdcall、__cdcel__fastcall三者區別

進行 pan span number 適用於 編譯器 api num 處理 __stdcall、__cdecl和__fastcall是三種函數調用協議,函數調用協議會影響函數參數的入棧方式、棧內數據的清除方式、編譯器函數名的修飾規則等。 調用協議常用場合 __stdca

Java中的JDKJREJVM之間的區別

run 編譯 java 發布 開發 特性 底層 應用程序 解釋 JDK(Java Development Kit)是針對Java開發員的產品,是整個Java的核心,包括了Java運行環境JRE、Java工具和Java基礎類庫。Java Runtime Environment

【轉載】form表單的兩種提交方式submitbutton的用法

按鈕 type ssid login false tex .get ons 轉載 1.當輸入用戶名和密碼為空的時候,需要判斷。這時候就用到了校驗用戶名和密碼,這個需要在jsp的前端頁面寫;有兩種方法,一種是用submit提交。一種是用button提交。方法一:在jsp的前端

Python 模塊調用global的用法

python global python 現有兩個文件,一個的文件名為ideal.py,另一個為hub.py,兩者都在目錄modualsio裏。ideal的具體內容為:num = 3class Foo(object): global num def foo(self): retur

NATPAT反向代理的區別

natNAT分為靜態NAT,動態NAT,和PAT1、靜態NAT:就是私有ip和公網ip一對一的映射,端口號不變化,一般用於局域網上網。2、動態NAT:就是多個私有ip和多個公網ip(地址池)多對多的映射,端口號不變化,當ISP提供的合法IP地址略少於網絡內部的計算機數量時。可以采用動態轉換的方式。 3、PAT