小编典典

在python中索引所有*除了*一项

all

有没有一种简单的方法来索引列表(或数组或其他)的所有元素, 除了 特定索引?例如,

  • mylist[3]将返回位置 3 的项目

  • milist[~3]将返回除 3 之外的整个列表


阅读 121

收藏
2022-08-19

共1个答案

小编典典

对于 列表 ,您可以使用列表组合。例如,要制作没有第三个元素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

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])

通常,这比上面列出的列表理解要快得多。

2022-08-19