python:根据条目的位置删除列表中的单个条目

Python: Remove a single entry in a list based on the position of the entry

本问题已经有最佳答案,请猛点这里访问。

是否有简单的方法删除列表中的条目?我只想删除第一个条目。在我看过的每个论坛中,唯一可以删除一个条目的方法是使用list.remove()函数。这将是完美的,但我只能删除条目,如果我知道它的名称。

1
2
    list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
    list.remove(0)

这不起作用,因为您只能删除基于其名称的条目。我必须运行list.remove('hey')。在这种情况下我不能这样做。

如果您需要任何其他信息,请询问。


您可以尝试以下方法:

1
2
3
4
5
6
7
8
>>> my_list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
>>> del my_list[0]
>>> my_list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
>>> if 'hey' in my_list:     # you're looking for this one I think
...     del my_list[my_list.index('hey')]
...
>>> my_list
['hi', 'hello', 'phil', 'zed', 'alpha']

您也可以使用filter

1
 my_list = filter(lambda x: x!='hey', my_list)

使用list comprehension

1
my_list = [ x for x in my_list if x!='hey']

首先,不要称某个东西为"list",因为它会破坏内置类型"list"。其次,你的答案是:

1
2
3
4
>>> my_list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
>>> del my_list[1]
>>> my_list
['hey', 'hello', 'phil', 'zed', 'alpha']


列表使用的是位置,而不是键(或名称,无论您想如何称呼它们)。

如果需要对数据结构进行命名访问,请考虑使用字典,它允许通过使用映射到valueskeys来访问其值。

1
2
3
4
5
d = {'hey':0, 'hi':0, 'hello':0, 'phil':0, 'zed':0, 'alpha':0}

del d['hey']

print(d)  # d = {'alpha': 0, 'hello': 0, 'hi': 0, 'phil': 0, 'zed': 0}

否则,您需要通过获取元素的索引并调用del alist[index]来采用基于索引的删除。


要添加到答案调查中,请执行以下操作:

1
2
3
4
>>> my_list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
>>> my_list=my_list[1:]
>>> my_list
['hi', 'hello', 'phil', 'zed', 'alpha']