如何在没有特定索引的元素的情况下获取列表中的所有元素 在python列表中。 如果有一种快速简便的方法,那就太好了。
由于
答案 0 :(得分:3)
假设
elements # list of values
n # unwanted element index
然后你可以做
result = elements[:n] + elements[n+1:]
或
result = elements[:] # copy
del result[n]
答案 1 :(得分:2)
除了切片之外还有另一种方法:
def exclude(iterable, index):
return [elem for i, elem in enumerate(iterable) if i != index]
那么,有什么好处?
嗯,它适用于任何可迭代的,而不仅仅是序列...但这不是什么大问题;当你处理一个生成器或一个字典时,你通常没有索引...(另外,你可以通过使用islice
而不是切片来更轻松地获得索引。)
但是,很容易推广到多个索引,如果你可能想要的话,这可能是一个大问题:
def exclude(iterable, *indices):
indices = set(indices)
return [elem for i, elem in enumerate(iterable) if i not in indices]
但是如果你不会想要那个,那就没有充分的理由,这只是额外的复杂性,所以请选择切片。
答案 2 :(得分:-1)
>>> lst = ['a', 'b', 'c', 'd', 'e']
>>> exclude = lambda l, i: l[:i] + l[i+1:]
>>> exclude(lst, 3)
['a', 'b', 'c', 'e']