有没有一种简单的方法来索引列表(或数组或其他)的所有元素, 除了 特定索引?例如,
mylist[3]将返回位置 3 的项目
mylist[3]
milist[~3]将返回除 3 之外的整个列表
milist[~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])
通常,这比上面列出的列表理解要快得多。