中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python列表中remove()函數的使用方法

發布時間:2021-12-27 17:17:38 來源:億速云 閱讀:215 作者:柒染 欄目:開發技術

python列表中remove()函數的使用方法,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1. 基本使用

remove() 函數可以刪除列表中的指定元素

語法

list.remove( element )

參數

  • element:任意數據類型(數字、字符串、列表等)

2. 刪除普通類型元素

刪除一個列表中「存在」的數字或字符串

list1 = ['zhangsan', 'lisi', 1, 2]
list1.remove(1)  # 刪除數字
print(list1)
list1.remove('zhangsan')  # 刪除字符串
print(list1)

輸出:

['zhangsan', 'lisi', 2]

['lisi', 2]

如果列表中「不存在」想要刪除的元素,則會報錯

list1 = [1, 2, 3]
list1.remove(4)

輸出:

Traceback (most recent call last):

  File "E:/data/PrCharm/test1/55.py", line 2, in <module>

    list1.remove(4)

ValueError: list.remove(x): x not in list

# 值錯誤: 需要刪除的值不在列表中

3. 刪除對象類型元素

刪除一個列表中「存在」的對象元素(列表、元祖等)

list1 = [1, 2, [3, 4], (5, 6)]
a = [3, 4]
b = (5, 6)
list1.remove(a)  # 刪除列表類型
print(list1)
list1.remove(b)  # 刪除元祖類型
print(list1)

輸出:

[1, 2, (5, 6)]

[1, 2]

需要注意的是:remove刪除對象類型的前提是,列表中的某個「元素」是對象類型,以下這種方式會報錯

list1 = [1, 2, 3]
list1.remove([1,2])

輸出:

Traceback (most recent call last):

  File "E:/data/PrCharm/test1/55.py", line 2, in <module>

    list1.remove([1,2])

ValueError: list.remove(x): x not in list

# 值錯誤: 需要刪除的值不在列表中

4. 一次只刪一個元素

        上面的案例中,列表 [1, 2] 看似在列表 [1, 2, 3] 中存在,實際上, remove() 函數判斷元素是否在列表中存在的標準是:匹配列表中的「單個元素」,而不是整個列表。

         remove() 函數會遍歷列表中的每一個元素,查看是否有元素與之匹配,匹配到相同的元素才會執行刪除,這也就意味著 remove() 函數一次只能刪除一個元素。

       自己刪自己也不行,因為自己并不在自己的元素中

list1 = [1, 2, 3, 4, 5]
print('我自己在我自己里面嗎?', list1 in list1)
list1.remove(list1)

輸出:

Traceback (most recent call last):

  File "E:/data/PrCharm/test1/55.py", line 3, in <module>

    list1.remove(list1)

ValueError: list.remove(x): x not in list

我自己在我自己里面嗎? False

5、Python列表的remove方法的注意事項

python列表中remove()函數的使用方法

為何沒有刪除列表中的全部元素?

解釋:

按照執行順序,第一個空格被刪除之后,后面的元素會前移(變成['空格','空格','12','23']),指針下一次會指向新列表的第二個元素(即初始狀態的第三個空格),從而初始狀態的第二個空格被跳過了,初始第三個空格被刪除,接著后面的元素又再次前移(變成['空格','12','23']),指針指向新列表的第三個元素,即初始狀態的第5個元素23,然后23被刪除了,因此只剩下['空格','12']

如果想排除初始列表中的部分元素,如何實現?

由上面的情況知道,在遍歷列表的同時對列表執行刪除操作,會造成意外的結果,那么對初始列表進行遍歷,對初始的列表的副本執行刪除操作呢?

python列表中remove()函數的使用方法

以上結果顯示,沒有得到預期效果。為什么?

問題出在copy=ls這一句,這里僅僅是使得copy與ls指向了同一片內存(即淺拷貝,shallow copy),并沒有執行【開辟一片新內存,并且ls內存中的內容復制到新內存,然后使copy指向新開辟的內存,即深拷貝,deep copy】這一系列操作。因此對copy執行的remove操作,和對遍歷ls列表,實質上還是都是針對同一片內存進行操作,因此結果上一個例子類似。

若想解決這一問題,有3個辦法法:

(1)

ls=[' ',' ',' ','12','23','abc','aa']

copy=[' ',' ',' ','12','23','abc','aa']

這一辦法對于已知列表的所有元素,且元素數量較少,結構較簡單時可行,其他情況下不可行。

(2)引入copy模塊的deepcopy方法:

python列表中remove()函數的使用方法

(3)另外準備一個空列表,遍歷初始列表時,將符合條件的元素逐一加入到空列表當中(利用列表的append方法)。

這種方法,思路上與remove方法相反,但執行的操作差不多,時間復雜度也與remove方法差不多,無需引入copy模塊。

另外,對于列表的remove方法,python基礎教程第二版給出的說明是:

remove方法用于移除列表中某個值的第一個匹配項:

>>>x=['to','be','or','not','to','be']

>>>x.remove('be')

>>>x

['to','or','not','to','be']

關于python列表中remove()函數的使用方法問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天长市| 马边| 东源县| 苗栗市| 瓦房店市| 福州市| 新野县| 庆安县| 开原市| 城步| 丘北县| 南雄市| 南陵县| 方山县| 墨竹工卡县| 桐城市| 石棉县| 万载县| 马关县| 南陵县| 内黄县| 彭州市| 阿勒泰市| 兴安盟| 宜丰县| 洛阳市| 县级市| 湘西| 工布江达县| 蒙城县| 新余市| 民权县| 牡丹江市| 乾安县| 图木舒克市| 长宁区| 大洼县| 大埔区| 老河口市| 星子县| 皮山县|