如何基于另一个列表中的索引从列表中获取子列表?

时间:2019-01-13 22:44:22

标签: c# python linq

所以,我有2个列表,其中一个包含对象,而另一个索引则是我想要的对象的第一个。

我想知道 C#中是否有一种方法可以基于存储在另一个列表中的索引来获取子列表?
我是Linq的新手,而Google尚未回答我。
还有 Python -ic这样做的方式是什么?

当然,我已经在使用简单的循环来实现这一目标!

List<int> IndexList;
List<int> ObjList;
List<int> subList;


foreach ( var index in IndexList )
    subList.Add(ObjList[index]);

3 个答案:

答案 0 :(得分:1)

您可以编写一个包含索引和项目的查询,以便可以查看IndexList是否包含索引,并且仅选择那些项目:

List<int> subList = ObjList
    .Where((item, index) => IndexList.Contains(index))
    .ToList();

答案 1 :(得分:0)

items = ["a","b","c"]
indexes = [1,2]
mappedList = list(filter(lambda item: items.index(item) in indexes, items))
print(mappedList) # prints: ['b', 'c']

以python实现来补充Rufus L的c#答案。

答案 2 :(得分:0)

Python的最佳解决方案:

[sublist[i] for i in indexlist]