有没有一种简单的方法来索引列表(或数组,或其他)中 除 特定索引 之外的 所有元素?例如,
mylist[3] 将把该物品退回位置3
mylist[3]
milist[~3] 将返回整个列表,除了3
milist[~3]
对于 列表 ,您可以使用列表组合。例如,要制作不含第3个元素b的副本a:
b
a
a = range(10)[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] b = [x for i,x in enumerate(a) if i!=3] # [9, 8, 7, 5, 4, 3, 2, 1, 0]
这是非常通用的方法,可以与所有可迭代对象(包括numpy数组)一起使用。如果要更换[]有(),b将是一个迭代器,而非列表。
[]
()
或者,您可以通过以下方式就地完成此操作pop:
pop
a = range(10)[::-1] # a = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] a.pop(3) # a = [9, 8, 7, 5, 4, 3, 2, 1, 0]
在 numpy中, 您可以使用布尔索引进行此操作:
a = np.arange(9, -1, -1) # a = array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) b = a[np.arange(len(a))!=3] # b = array([9, 8, 7, 5, 4, 3, 2, 1, 0])
通常,这比上面列出的列表理解要快得多。