Is er een verschil tussen de bovenstaande drie methoden om een element uit een lijst te verwijderen?
Antwoord 1, autoriteit 100%
De effecten van de drie verschillende methoden om een element uit een lijst te verwijderen:
remove
verwijdert de eersteovereenkomende waarde, niet een specifieke index:
>>> a = [0, 2, 3, 2]
>>> a.remove(2)
>>> a
[0, 3, 2]
del
verwijdert het item bij een specifieke index:
>>> a = [9, 8, 7, 6]
>>> del a[1]
>>> a
[9, 7, 6]
en pop
verwijdert het item bij een specifieke index en geeft het terug.
>>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]
Hun foutmodi zijn ook anders:
>>> 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
Antwoord 2, autoriteit 15%
Gebruik del
om een element per index te verwijderen, pop()
om het per index te verwijderen als je de geretourneerde waarde nodig hebt, en remove()
om een element op waarde te verwijderen. De laatste vereist het doorzoeken van de lijst en verhoogt ValueError
als een dergelijke waarde niet in de lijst voorkomt.
Bij het verwijderen van index i
uit een lijst van n
elementen, zijn de rekenkundige complexiteit van deze methoden
del O(n - i)
pop O(n - i)
remove O(n)
Antwoord 3, autoriteit 7%
Aangezien niemand anders het heeft genoemd, moet u er rekening mee houden dat del
(in tegenstelling tot pop
) het verwijderen van een reeks indexen toestaat vanwege list slicing:
>>> lst = [3, 2, 2, 1]
>>> del lst[1:]
>>> lst
[3]
Hierdoor kan ook een IndexError
worden vermeden als de index niet in de lijst staat:
>>> lst = [3, 2, 2, 1]
>>> del lst[10:]
>>> lst
[3, 2, 2, 1]
Antwoord 4, autoriteit 4%
Al behoorlijk goed beantwoord door anderen. Deze van mijn kant 🙂
Het is duidelijk dat pop
de enige is die de waarde retourneert, en remove
de enige is die het object doorzoekt, terwijl del
grenzen zichzelf tot een eenvoudige verwijdering.
Antwoord 5, autoriteit 2%
Veel beste verklaringen zijn hier, maar ik zal mijn best doen om meer te vereenvoudigen.
Van al deze methoden, verwijder & pop zijn postfixterwijl verwijderen prefixis.
remove():Het werd gebruikt om het eerste voorkomen van een element te verwijderen
remove(i)
=> eerste keer dat de i-waarde voorkomt
>>> a = [0, 2, 3, 2, 1, 4, 6, 5, 7]
>>> a.remove(2) # where i = 2
>>> a
[0, 3, 2, 1, 4, 6, 5, 7]
pop():Het werd gebruikt om elementen te verwijderen als:
niet gespecificeerd
pop()
=> vanaf einde van lijst
>>>a.pop()
>>>a
[0, 3, 2, 1, 4, 6, 5]
gespecificeerd
pop(index)
=> van index
>>>a.pop(2)
>>>a
[0, 3, 1, 4, 6, 5]
WAARSCHUWING: gevaarlijke methode vooruit
delete(): het is een prefixmethode.
Houd twee verschillende syntaxis in de gaten voor dezelfde methode: [] en (). Het heeft de macht om:
1.Verwijder index
del a[index]
=> gebruikt om index en de bijbehorende waarde te verwijderen, net als pop.
>>>del a[1]
>>>a
[0, 1, 4, 6, 5]
2.Verwijder waarden in bereik [index 1:index N]
del a[0:3]
=> meerdere waarden binnen bereik
>>>del a[0:3]
>>>a
[6, 5]
3.Laatste maar niet lijst, om de hele lijst in één keer te verwijderen
del (a)
=> zoals hierboven gezegd.
>>>del (a)
>>>a
Ik hoop dat dit de eventuele verwarring verduidelijkt.
Antwoord 6
pop
Neemt index (indien gegeven, anders laatste), verwijdert waarde bij die index en retourneert waarde
verwijder
Neemt waarde, verwijdert eerste instantie en retourneert niets
verwijderen
Neemt index, verwijdert waarde bij die index en retourneert niets
Antwoord 7
Elke bewerking/functie op verschillende datastructuren is gedefinieerd voor bepaalde acties. Hier in jouw geval, d.w.z. een element verwijderen, verwijderen, Pop en verwijderen. (Als u sets overweegt, voegt u nog een bewerking toe – weggooien)
Een ander verwarrend geval is tijdens het toevoegen. Invoegen/toevoegen.
Laten we voor demonstratie deque implementeren. deque is een hybride lineaire datastructuur, waar je aan beide uiteinden elementen kunt toevoegen/verwijderen. (Achter- en voorkant)
class Deque(object):
def __init__(self):
self.items=[]
def addFront(self,item):
return self.items.insert(0,item)
def addRear(self,item):
return self.items.append(item)
def deleteFront(self):
return self.items.pop(0)
def deleteRear(self):
return self.items.pop()
def returnAll(self):
return self.items[:]
Bekijk hier de bewerkingen:
def deleteFront(self):
return self.items.pop(0)
def deleteRear(self):
return self.items.pop()
Bewerkingen moeten iets teruggeven. Dus pop – Met en zonder index.
Als ik de waarde niet wil retourneren:
del self.items[0]
Verwijderen op waarde niet Index:
-
verwijder :
list_ez=[1,2,3,4,5,6,7,8] for i in list_ez: if i%2==0: list_ez.remove(i) print list_ez
Retourneert [1,3,5,7]
laten we eens kijken naar het geval van sets.
set_ez=set_ez=set(range(10))
set_ez.remove(11)
# Gives Key Value Error.
##KeyError: 11
set_ez.discard(11)
# Does Not return any errors.
Antwoord 8
Hier is een gedetailleerd antwoord.
del kan voor elk klasseobject worden gebruikt, terwijl pop en remove en beperkt tot specifieke klassen.
Voor del
Hier zijn enkele voorbeelden
>>> a = 5
>>> b = "this is string"
>>> c = 1.432
>>> d = myClass()
>>> del c
>>> del a, b, d # we can use comma separated objects
We kunnen de __del__
methode overschrijven in door de gebruiker gemaakte klassen.
Specifiek gebruik met lijst
>>> a = [1, 4, 2, 4, 12, 3, 0]
>>> del a[4]
>>> a
[1, 4, 2, 4, 3, 0]
>>> del a[1: 3] # we can also use slicing for deleting range of indices
>>> a
[1, 4, 3, 0]
Voor pop
pop
neemt de index als parameter en verwijdert het element bij die index
In tegenstelling tot del
, retourneert pop
wanneer het lijstobject wordt aangeroepen de waarde bij die index
>>> a = [1, 5, 3, 4, 7, 8]
>>> a.pop(3) # Will return the value at index 3
4
>>> a
[1, 5, 3, 7, 8]
Voor remove
verwijder neemt de parameterwaarde en verwijder die waarde uit de lijst.
Als er meerdere waarden aanwezig zijn, wordt de eerste instantie verwijderd
Note
: Zal ValueError genereren als die waarde niet aanwezig is
>>> a = [1, 5, 3, 4, 2, 7, 5]
>>> a.remove(5) # removes first occurence of 5
>>> a
[1, 3, 4, 2, 7, 5]
>>> a.remove(5)
>>> a
[1, 3, 4, 2, 7]
Ik hoop dat dit antwoord nuttig is.
Antwoord 9
Terwijl pop en delete beide indices nemen om een element te verwijderen zoals vermeld in bovenstaande opmerkingen. Een belangrijk verschil is de tijdscomplexiteit voor hen. De tijdscomplexiteit voor pop() zonder index is O(1), maar is niet hetzelfde voor het verwijderen van het laatste element.
Als u altijd het laatste element wilt verwijderen, heeft het altijd de voorkeur om pop() boven delete() te gebruiken. Voor meer uitleg over tijdscomplexiteit kunt u verwijzen naar https:/ /www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt
Antwoord 10
De verwijder-bewerking op een lijst is een waarde gegeven om te verwijderen. Het doorzoekt de lijst om een item met die waarde te vinden en verwijdert het eerste overeenkomende item dat het vindt. Het is een fout als er geen overeenkomend item is, genereert een ValueError.
>>> x = [1, 0, 0, 0, 3, 4, 5]
>>> x.remove(4)
>>> x
[1, 0, 0, 0, 3, 5]
>>> del x[7]
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
del x[7]
IndexError: list assignment index out of range
De del-instructie kan worden gebruikt om een hele lijst verwijderen. Als je een specifiek lijstitem als argument voor del hebt (bijvoorbeeld lijstnaam [7] om specifiek naar het 8e item in de lijst te verwijzen), wordt dat item gewoon verwijderd. Het is zelfs mogelijk om een “slice” uit een lijst te verwijderen. Het is een fout als de index buiten bereik is, een IndexErroroplevert .
>>> x = [1, 2, 3, 4]
>>> del x[3]
>>> x
[1, 2, 3]
>>> del x[4]
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
del x[4]
IndexError: list assignment index out of range
Het gebruikelijke gebruik van popis om verwijder het laatste item uit een lijst terwijl u de lijst als stapel gebruikt. In tegenstelling tot del retourneert pop de waarde die het uit de lijst heeft gehaald. U kunt optioneel een indexwaarde geven aan pop en pop van een ander dan het einde van de lijst (bijv. listname.pop(0) zal het eerste item uit de lijst verwijderen en dat eerste item als resultaat retourneren). U kunt dit gebruiken om de lijst zich als een wachtrij te laten gedragen, maar er zijn bibliotheekroutines beschikbaar die wachtrijbewerkingen beter kunnen laten presteren dan pop(0). Het is een fout als de index buiten bereik is, een IndexErroroplevert .
>>> x = [1, 2, 3]
>>> x.pop(2)
3
>>> x
[1, 2]
>>> x.pop(4)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
x.pop(4)
IndexError: pop index out of range
Zie collections.dequevoor meer details.
Antwoord 11
Remove werkt in principe op de waarde .
Verwijder en pop werk op de index
Verwijderen verwijdert in feite de eerste overeenkomende waarde.
Verwijderen verwijdert het item uit een specifieke index
Pop neemt in feite een index en retourneert de waarde bij die index. De volgende keer dat u de lijst afdrukt, wordt de waarde niet weergegeven.
Antwoord 12
U kunt ook remove gebruiken om een waarde per index te verwijderen.
n = [1, 3, 5]
n.remove(n[1])
n zou dan verwijzen naar [1, 5]