当前位置: 首页 > 面试题库 >

索引所有*除外* python中的一项

邹杰
2023-03-14
问题内容

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

  • mylist[3] 将把该物品退回位置3

  • milist[~3] 将返回整个列表,除了3


问题答案:

对于 列表 ,您可以使用列表组合。例如,要制作不含第3个元素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])

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



 类似资料:
  • 我知道在Swift 3中,循环的典型C风格发生了一些变化。我一直在努力解决这个问题,但在很多情况下,我似乎比以前编写了更多的代码。也许有人能把我引向正确的方向,因为这就是我想要的: 非常简单的东西。我希望能够获取我所在的索引,并且如果names.count==0,则不运行for循环。一气呵成。 但我在Swift 3中的选择似乎不允许我这样做。我必须做一些类似的事情: 需要在开始时使用if语句,因为

  • 我有一个数组: 我调用它的拼接函数来删除索引之前的所有项: 我只是好奇有没有类似于splice的功能来移除一个索引后的所有项目: 伪码

  • 如何从索引中删除Elasticsearch中的所有文档,而不删除索引本身? 回答 sql中是否有截断表之类的选项。我知道我可以循环所有id并删除它们中的每一个,但例如通配符可能有一些神奇的选项。

  • 问题内容: 我需要更改现有数据库以添加列。因此,我也想更新UNIQUE字段以包含该新列。我正在尝试删除当前索引,但不断收到错误 问题答案: 您必须删除外键。MySQL中的外键会在表上自动创建索引(该主题上有一个SO问题)。

  • 问题内容: 知道索引列会带来更好的性能,是否值得对数据库所有表中的所有列建立索引?这种方法的优点/缺点是什么? 如果值得的话,有没有一种方法可以在SQL Server中自动创建索引?我的应用程序动态地添加了表和列(取决于用户配置),我希望它们被自动索引。 问题答案: 由于上面提到的原因,很难想象在现实世界中对每列进行索引都是有用的。场景类型将需要一堆不同的查询,所有查询都只访问表的一列。每个查询可

  • 问题内容: 这可能是太多基于意见的问题,但这里有: 我发现了与实体框架和数据库迁移有关的一个有趣的怪癖。看来,每当我们创建外键时,它也会在该列上创建索引。 我读了一个SO问题:实体框架代码第一个外键添加索引,每个人似乎都说这是一个很好的,有效的主意,但我不知道怎么做。索引列是非常特定于环境的。例如,EF索引了我的表上几乎从来没有(〜1%)用于搜索的FK,并且也索引了源表,这意味着即使我加入其他表,