第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何按索引從列表中刪除元素?

如何按索引從列表中刪除元素?

一只萌萌小番薯 2019-06-29 14:49:40
如何按索引從列表中刪除元素?如何在Python中按索引從列表中刪除元素?我找到了list.remove方法,但是假設(shè)我想移除最后一個元素,我如何做到這一點?似乎默認的刪除搜索列表,但我不想執(zhí)行任何搜索。
查看完整描述

3 回答

?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

使用del并指定要刪除的元素的索引:

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> del a[-1]>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8]

還支持切片:

>>> del a[2:4]>>> a[0, 1, 4, 5, 6, 7, 8, 9]

這里是本教程中的部分。


查看完整回答
反對 回復 2019-06-29
?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

你可能想pop:

a = ['a', 'b', 'c', 'd']a.pop(1)# now a is ['a', 'c', 'd']

默認情況下,pop如果沒有任何參數(shù),則移除最后一項:

a = ['a', 'b', 'c', 'd']a.pop()# now a is ['a', 'b', 'c']


查看完整回答
反對 回復 2019-06-29
?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

就像其他人提到的,POP和del是這個刪除給定索引項的有效方法。然而,僅僅是為了完成(因為相同的事情可以通過Python的許多方式來完成):

使用切片(這并不能從原始列表中刪除項目):

(在使用Python列表時,這也是效率最低的方法,但在處理不支持POP的用戶定義對象時,這可能是有用的(但不是有效的,我重申),但確實定義了__getitem__ ):

>>> a = [1, 2, 3, 4, 5, 6]>>> index = 3 # Only positive index>>> a = a[:index] + a[index+1 :]# a is now [1, 2, 3, 5, 6]

注:請注意,此方法不會修改列表,如下所示popdel..相反,它生成兩個列表副本(一個從一開始到索引,但沒有它)(a[:index])和索引后面的一個,直到最后一個元素(a[index+1:])并通過添加這兩種方法創(chuàng)建一個新的List對象。然后將其重新分配到List變量(a)。因此,舊的List對象被取消引用,并因此被垃圾收集(前提是原始List對象不被除a之外的任何變量引用)。

這使得這種方法效率很低,也可能產(chǎn)生不良的副作用(特別是當其他變量指向未修改的原始列表對象時)。

感謝@MarkDickinson指出了這一點.。

這,這個堆棧溢出答案解釋了切片的概念。

還請注意,這僅適用于正指數(shù)。

在與對象一起使用時,__getitem__方法必須已定義,更重要的是,__add__方法必須已定義為返回包含兩個操作數(shù)中的項的對象。

本質(zhì)上,這適用于類定義如下的任何對象:

class foo(object):
    def __init__(self, items):
        self.items = items    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )

這和list它定義了__getitem____add__方法。

三種方法在效率方面的比較:

假設(shè)以下是預先定義的:

a = range(10)index = 3

這個del object[index]方法:

迄今為止最有效的方法。它將使所有定義__del__方法。

拆卸如下:

代碼:

def del_method():
    global a    global index    del a[index]

拆卸:

 10    0 LOAD_GLOBAL     0 (a)
       3 LOAD_GLOBAL     1 (index)
       6 DELETE_SUBSCR   # This is the line that deletes the item
       7 LOAD_CONST      0 (None)
      10 RETURN_VALUENone

pop方法:

它比del方法效率低,并且當您需要獲得已刪除的項時會使用它。

代碼:

def pop_method():
    global a    global index
    a.pop(index)

拆卸:

 17     0 LOAD_GLOBAL     0 (a)
        3 LOAD_ATTR       1 (pop)
        6 LOAD_GLOBAL     2 (index)
        9 CALL_FUNCTION   1
       12 POP_TOP       13 LOAD_CONST      0 (None)
       16 RETURN_VALUE

切片和添加方法。

效率最低的。

代碼:

def slice_method():
    global a    global index
    a = a[:index] + a[index+1:]

拆卸:

 24     0 LOAD_GLOBAL    0 (a)
        3 LOAD_GLOBAL    1 (index)
        6 SLICE+2
        7 LOAD_GLOBAL    0 (a)
       10 LOAD_GLOBAL    1 (index)
       13 LOAD_CONST     1 (1)
       16 BINARY_ADD       17 SLICE+1
       18 BINARY_ADD       19 STORE_GLOBAL   0 (a)
       22 LOAD_CONST     0 (None)
       25 RETURN_VALUENone

注意:在所有三個反匯編中,忽略最后兩行,基本上是return None..另外,前兩行正在加載全局值。aindex.


查看完整回答
反對 回復 2019-06-29
  • 3 回答
  • 0 關(guān)注
  • 2480 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號