首页 > 解决方案 > 使用理解列表按索引选择具有重复项的项目

问题描述

尝试通过循环遍历它们并按索引选择它们来通过另一个索引列表从列表中选择项目,但结果是缺少重复项。

例子。

X = [[1, 'a', 33], [2, 'a', 44], [3, 'bb', 56]] #sample data
indices = [1,1,1]        #index with duplicates
[ x[-1] for i,x in enumerate(X) if i in indices] 

我预计

[[2, 'a', 44], [2, 'a', 44], [2, 'a', 44]] 

但我明白了

[[2, 'a', 44]] 

我尝试了正常循环而不是理解,它可以工作。但是当我尝试获取列表的一部分时不起作用。所以我想要

标签: pythonpython-3.x

解决方案


您想迭代indices理解并从中选择该元素X

>>> X = [[1, 'a', 33], [2, 'a', 44], [3, 'bb', 56]]
>>> indices = [1,1,1]
>>> [X[i] for i in indices]
[[2, 'a', 44], [2, 'a', 44], [2, 'a', 44]]

在您的情况下,它不起作用,因为您i只会1在迭代中使用 enumerate


推荐阅读