python - 使用要排除的索引列表进行索引

标签 python list indexing

这类似于其他一些问题( Explicitly select items from a Python list or tupleGrabbing specific indices of a list in Python ),但我希望做相反的事情:

指定索引列表/元组以排除而不是选择的干净方法是什么?我正在考虑类似于 R 或 MATLAB 的东西,您可以在其中指定要排除的索引,例如:

vector1 <- c('a', 'b', 'c', 'd')
vector2 <- vector1[-1] # ['b', 'c', 'd']
vector3 <- vector1[c(-1, -2)] # ['c', 'd']

有没有一种好的方法可以在 Python 中完成同样的事情?如果这是一个骗局,我深表歉意,我不确定要搜索什么。

最佳答案

>>> to_exclude = {1, 2}
>>> vector = ['a', 'b', 'c', 'd']
>>> vector2 = [element for i, element in enumerate(vector) if i not in to_exclude]

这里的技巧是:

  • 使用列表理解将一个列表转换为另一个列表。 (您也可以使用 filter 函数,尤其是当您要过滤的谓词已经作为一个名字不错的函数存在时。)
  • 使用enumerate 将每个元素及其索引放在一起。
  • 对任何 Set 使用 in 运算符或 Sequence* 类型来决定过滤哪些。 (如果有很多值,set 是最有效的,并且可能在概念上是正确的答案......但它对少数几个真的无关紧要;如果你已经有了一个列表或包含 4 个索引的元组,这也是一个“SetSequence”,因此您可以直接使用它。)

* 从技术上讲,任何 Container会做。但是大多数不是 SetSequenceContainer 在这里都是愚蠢的。

关于python - 使用要排除的索引列表进行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450835/

相关文章:

r - 在 R 中向量化 "if"

python - 另存为文件对话框 - 如何不允许覆盖

asp.net-mvc - asp.net mvc 3 可变长度可编辑列表

list - 获取列表的最小值

java - 在 arrayList 中查找特定对象

mysql - 2 个索引的错误结果

python 解析字符串以获取模式字符串

python - Cython 包装一个使用另一个库的类

python - Grpc python 客户端服务器流式传输未按预期工作

r - 访问嵌套在 R 列表中的向量的倒数第二个元素