首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pythonic式的基于索引的列表过滤方法

Pythonic式的基于索引的列表过滤方法
EN

Stack Overflow用户
提问于 2014-08-13 11:17:00
回答 1查看 88关注 0票数 0

我想知道在python list上有没有python的方式来执行下面的操作。输入是:一个大的python列表demo = [1,3,5,...],一个输入索引列表索引,如[0,1][2,3,5]等。带有索引的demo = [1,3,5,6]的预期输出将是过滤掉索引列表中的值的[5,6]

我能想到的一种方法是: python列表理解,像[demo[i] for i in index]一样,给出相反的[1,3],并转换demo和[1,3]来设置和应用设置差异。

我想知道更好的解决方案和更好的性能。

EN

回答 1

Stack Overflow用户

发布于 2014-08-13 11:18:51

代码语言:javascript
复制
demo = [1,3,5,7,9,11,13]
index = {2,3,5}
[value for i, value in enumerate(demo) if i not in index]
# [1, 3, 9, 13]
# Note that you can use a generator expression for a large list that you don't
#   require to be in memory all at once, e.g.
# (value for i,value in enumerate(demo) if i not in index)

您也可以使用filter

代码语言:javascript
复制
map(lambda x: x[1], filter(lambda x: x[0] not in index, enumerate(demo)))
# or map(operator.itemgetter(1), filter( ... ) )

或者甚至是集合操作,需要做一些工作...

代码语言:javascript
复制
correct_indexes = set(range(len(demo))) - index
[demo[i] for i in correct_indexes]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25277473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档