2016-06-07 3 views
2

В массиве Python мне нужно знать (если возможно) как удалить элемент массива по его имени, не зная индекса элемента в массиве.Удалить элемент массива Python по имени

Так что, если у меня был этот массив определен

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

Тогда мы имели бы три элемента массива.
Билли, Боб и компании Apple.
И потом, если у меня был этот код

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

Мне нужно знать, как удалить элемент массива по его имени.
Например, если пользователь ввел «Билли», и программа не знала индекс Билли в массиве, как бы удалить Билли из массива, просто зная его имя?

ответ

5

Вы также можете использовать remove

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

Дополнительные точки коричневого цвета, которые отображают обработку «ValueError», которая появится, когда элемент отсутствует в списке. – idjaw

+0

Брауни-очки от идиот? Вы просто сделали мой день! – Greg

+0

\ o/Лучшие очки! – idjaw

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

Это все в основном.

+0

Почему бы просто не использовать 'remove'? – idjaw

+0

Я думал, что удалить также взял индекс в качестве параметра @idjaw. Думаю, я был неправ. В любом случае, это работает, однако метод Грега более изящный. –

4

Вы можете использовать remove() метод для удаления элемента. Проверьте, присутствует ли требуемый элемент в списке, прежде чем пытаться удалить его, поскольку добавляется ValueError, если элемент отсутствует в списке.

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

@AshishAhuja ツ, я отредактировал ответ. Я буду помнить это, спасибо :) – SilentMonk

+0

@cpburnz, спасибо. Я снял перерыв, который был лишним. – SilentMonk

+1

@SilentMonk Спасибо, что сделали это. Теперь ответ намного лучше. –

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

Удалить только первое вхождение, если вы хотите, чтобы все элементы, изменить пример выше.

Смежные вопросы