Python:一种使用索引列表对列表进行切片的有效方法

Posted

技术标签:

【中文标题】Python:一种使用索引列表对列表进行切片的有效方法【英文标题】:Python: an efficient way to slice a list with a index list 【发布时间】:2012-09-27 22:09:38 【问题描述】:

我想知道一种有效的方法和代码节省来分割一千个元素的列表

示例:

b = ["a","b","c","d","e","f","g","h"] 
index = [1,3,6,7] 

我希望得到如下结果:

c = ["b","d","g","h"] 

【问题讨论】:

【参考方案1】:

使用列表最直接的方法是使用列表推导:

c = [b[i] for i in index]

但是,根据您的数据的具体外观以及您还需要对它做什么,您可以使用 numpy 数组 - 在这种情况下:

c = b[index]

会做你想做的事,并且会避免大切片的潜在内存开销 - numpy 数组比列表更有效地存储,切片需要查看数组而不是制作部分副本。

【讨论】:

感谢 lvc 我有这个错误信息 c = b[index] Traceback (last recent call last): File "", line 1, in TypeError: list indices must be整数,而不是列表 @Gianni 正如我在回答中所说,如果您使用 numpy 数组而不是列表,这将起作用。他们可以把各种有趣的东西作为索引;列表只能接受整数(以及带有整数参数的切片)。 +1 用于使用列表理解。教新手是件好事。

以上是关于Python:一种使用索引列表对列表进行切片的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中切片元组列表?

Python列表/数组:禁用切片中的负索引环绕

使用部分索引元组列表对多索引数据帧进行切片的最佳方法是啥?

使用索引值列表对 pandas 多索引数据框进行切片 [重复]

如何使用 .loc 对 DF 进行切片,列表中可能包含在索引/列中找不到的元素

python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象