Python 使用另一个列表和索引列表生成列表

Python 使用另一个列表和索引列表生成列表,python,list,list-comprehension,Python,List,List Comprehension,假设我有以下两个列表和一个较小的索引列表: list1=[2,3,4,6,7] list2=[0,0,0,0,0] idx=[1,2] 我想使用列表1中指定索引处的值替换列表2中的值。 我可以使用以下循环来执行此操作: for i in idx: list2[i]=list1[i] 如果我只有list1和idx,我如何编写列表理解来生成list2(与list1长度相同),从而list2在索引idx或0处具有list1的值 这将调用\uuu包含idx的每次调用,但对于小(ish)列表来

假设我有以下两个列表和一个较小的索引列表:

list1=[2,3,4,6,7]
list2=[0,0,0,0,0]
idx=[1,2]
我想使用列表1中指定索引处的值替换列表2中的值。 我可以使用以下循环来执行此操作:

for i in idx:
    list2[i]=list1[i]

如果我只有
list1
idx
,我如何编写列表理解来生成
list2
(与
list1
长度相同),从而
list2
在索引
idx
0
处具有
list1
的值

这将调用
\uuu包含
idx
的每次调用,但对于小(ish)列表来说应该是合理的

另外,不要这样编写代码。它的可读性远不如您的示例。此外,numpy可以提供您想要的语法类型,而不牺牲可读性或速度



我假设您希望通过在特定索引处附加list1的值来生成list2。您只需检查idx列表是否包含任何值,然后使用for each循环将特定的list1值附加到list2。如果idx为空,则只将list1[0]附加到list2

    if(len(idx) > 0):
        for i in idx:
            list2.append(list1[i])

    else:
        list2.append(list1[0])

numpy示例引发以下错误:
TypeError:list索引必须是整数或片,而不是list
。它应该是
arr1[idx]
。然后,它就开始工作了。修正了,抱歉输入错误
list2 = [e if i in idx else 0 for i, e in enumerate(list1)]
import numpy as np 

...

arr1 = np.array(list1)

arr2 = np.zeros_like(list1)
arr2[idx] = arr1[idx]
    if(len(idx) > 0):
        for i in idx:
            list2.append(list1[i])

    else:
        list2.append(list1[0])