2016-06-07 82 views
2

在Python数组中,我需要知道(如果可能,)如何在不知道数组中元素索引的情况下通过名称删除数组元素。按名称删除Python数组元素

所以,如果我有这个数组定义

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

然后我们将有三个数组元素。
比利鲍勃,并苹果
然后,如果我有这个代码

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

我需要知道如何通过它的名字删除数组中的元素。例如,如果用户输入“Billy”,并且程序不知道数组中的Billy的索引,那么我们如何从数组中删除Billy,只知道它的名字?

回答

5

您还可以使用remove

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

额外布朗尼指向显示当项目不在列表中时会出现的'ValueError'的处理。 – idjaw

+0

布朗尼点从idjaw?你让我今天很开心! – 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) 

仅删除第一次出现,如果你想要的所有元素,上述修改示例。