2016-06-07 10 views
2

In einem Python-Array muss ich wissen (wenn möglich), wie Sie ein Array-Element durch seinen Namen löschen, ohne den Index des Elements im Array zu kennen.Entfernen Sie ein Python-Array-Element nach Name

Also, wenn ich dieses Array hatte definiert

usernames = ["Billy", "Bob", "Apple"] 

Dann würden wir drei Array-Elemente haben.
Billy, Bob und Apple-.
Und dann, wenn ich

# Deleting the element 
def delete_username(): 
    to_delete = raw_input("Username to remove:") 
    # (Code to delete by element name) 

diesen Code hatte muss ich wissen, wie das Element in dem Array durch seinen Namen zu löschen.
Wenn der Benutzer beispielsweise "Billy" eingegeben hat und das Programm den Index von Billy im Array nicht kannte, wie würden wir Billy aus dem Array löschen, wenn wir nur seinen Namen kennen?

Antwort

5

Sie können auch das Element verwenden remove

usernames = ["Billy", "Bob", "Apple"] 
if "Billy" in usernames: 
    usernames.remove("Billy") 
# usernames = ["Bob", "Apple"] 
+1

Zusätzliche Pluspunkte zeigen die Handhabung des 'ValueError', der auftritt, wenn das Objekt nicht in der Liste ist. – idjaw

+0

Brownie Punkte von Idjaw? Du hast gerade meinen Tag gemacht! – Greg

+0

\ o/Beste Punkte! – idjaw

0
if to_delete in usernames: 
    usernames.pop(usernames.index(to_delete)) 

Das ist es im Grunde.

+0

Warum nicht einfach 'remove' verwenden? – idjaw

+0

Ich dachte, Remove nahm auch einen Index als Parameter @idjaw. Ich vermute, ich lag falsch. Wie dem auch sei, Gregs Methode ist eleganter. –

4

Sie remove() Methode entfernen können. Überprüfen Sie, ob das erforderliche Element in der Liste vorhanden ist, bevor Sie versuchen, es zu löschen, da eine ValueError ausgelöst wird, wenn das Element nicht in der Liste vorhanden ist.

if to_delete in usernames: 
    usernames.remove(to_delete) 
+0

@AshishAhuja I, habe ich die Antwort bearbeitet. Ich werde das im Hinterkopf behalten, danke :) – SilentMonk

+0

@cpburnz, danke. Ich habe die Pause entfernt, die unnötig war. – SilentMonk

+1

@SilentMonk Danke dafür. Jetzt ist die Antwort viel besser. –

0
def remove_by_name(name): 
    if name in usernames: 
     usernames.remove(name) 

nur das erste Vorkommen entfernen, wenn Sie alle Elemente wollen, ändern Sie die obige Probe.