如何基于Python中现有的对象列表和索引列表创建对象列表

如何基于Python中现有的对象列表和索引列表创建对象列表,python,Python,我有一个对象列表list和一个索引列表index,我想创建一个新列表,在这个索引列表定义的索引中包含原始列表的对象。 我尝试了几种方法,但都做不到。 例如,如果索引中只有两个索引,那么为什么下面的操作不起作用? new_list=[list[索引[0]]+list[索引[1]] 对于任何长度的索引列表,我们都很乐意知道解决此问题的一般方法。以下工作: my_list=['a','b','c','d'] my_indices=[1, 3] new_list = [my_list[i] for i

我有一个对象列表
list
和一个索引列表
index
,我想创建一个
新列表
,在这个索引列表定义的索引中包含原始列表的对象。
我尝试了几种方法,但都做不到。
例如,如果
索引中只有两个索引,那么为什么下面的操作不起作用?
new_list=[list[索引[0]]+list[索引[1]]

对于任何长度的索引列表,我们都很乐意知道解决此问题的一般方法。

以下工作:

my_list=['a','b','c','d']
my_indices=[1, 3]

new_list = [my_list[i] for i in my_indices if i < len(my_list)]
以下工作:

my_list=['a','b','c','d']
my_indices=[1, 3]

new_list = [my_list[i] for i in my_indices if i < len(my_list)]

如果您想单独处理列表元素,请使用zip(list1,list2),sacul的解决方案会起作用,但问题是您添加的是列表的对象,而不是列表。这很混乱,因为您使用的是变量“list”,这是用于创建列表的python函数的名称。如果您的列表对象名为L,则可以执行list([L[indexes[0]]])+list([L[indexes[1]]),这样就可以了。但不要那样做。sacul的解决方案就是这样做的。如果您想单独处理列表元素,请使用zip(list1,list2),sacul的解决方案会起作用,但问题是您添加的是列表的对象,而不是列表。这很混乱,因为您使用的是变量“list”,这是用于创建列表的python函数的名称。如果您的列表对象名为L,则可以执行list([L[indexes[0]]])+list([L[indexes[1]]),这样就可以了。但不要那样做。sacul的解决方案就是这样做的。