Python:根据条目的位置删除列表中的单个条目[重复]
Posted
技术标签:
【中文标题】Python:根据条目的位置删除列表中的单个条目[重复]【英文标题】:Python: Remove a single entry in a list based on the position of the entry [duplicate] 【发布时间】:2016-01-31 07:15:39 【问题描述】:有没有一种简单的方法可以删除列表中的条目?我只想删除第一个条目。在我看过的每个论坛中,我可以删除一个条目的唯一方法是使用 list.remove()
函数。这将是完美的,但如果我知道它的名称,我只能删除该条目。
list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
list.remove(0)
这不起作用,因为您只能根据其名称删除条目。我必须运行list.remove('hey')
。在这种特殊情况下,我不能这样做。
如果您需要任何其他信息,请询问。
【问题讨论】:
只要使用list.pop(0)
您只是删除第一个条目吗? .pop()
可以给你。或者您是否需要删除列表中的随机单个条目,例如可以是 [0] 或 [3] 等?
list.remove(list.index('hey'))
即使你只能通过内容删除一个项目,你也知道它的内容:它是list[0]
。因此,如果您想使用remove
删除第一个项目,那就是list.remove(list[0])
。但不要那样做,使用pop()
或del
。
【参考方案1】:
您可以尝试以下方法:
>>> 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
:
my_list = filter(lambda x: x!='hey', my_list)
使用list comprehension
:
my_list = [ x for x in my_list if x!='hey']
【讨论】:
【参考方案2】:首先,永远不要称某事物为“列表”,因为它破坏了内置类型“列表”。其次,这是你的答案:
>>> my_list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
>>> del my_list[1]
>>> my_list
['hey', 'hello', 'phil', 'zed', 'alpha']
【讨论】:
【参考方案3】:列表使用位置,而不是键(或名称,无论你想如何称呼它们)。
如果您需要命名访问您的数据结构,请考虑改用字典,它允许使用映射到values
的keys
访问其值。
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]
来诉诸基于索引的删除。
【讨论】:
【参考方案4】:添加到答案投票中......怎么样:
>>> my_list = ['hey', 'hi', 'hello', 'phil', 'zed', 'alpha']
>>> my_list=my_list[1:]
>>> my_list
['hi', 'hello', 'phil', 'zed', 'alpha']
【讨论】:
以上是关于Python:根据条目的位置删除列表中的单个条目[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥带有单个条目的python列表为-1索引和0索引提供第0个元素? [复制]
FaunaDB - 如何批量更新单个 graphQL 突变中的条目列表?