用Python中的新值替换替换索引中给定位置的列表中的元素

时间:2018-12-11 17:51:56

标签: python

我想用新值替换替换索引中给定位置的列表中的元素。例如,如果给定列表为replace_elements([1,2,3,4,5,6,7,8],[0,4,3],0),则结果应为[0, 2, 3, 0, 0, 6, 7, 8]。我尝试了几种方法,但似乎都没有用。我尝试了以下代码:

for i in new_value:
   list_a[i] = replacement_indices
return new_value

2 个答案:

答案 0 :(得分:3)

TL; DR:一种列表推导方法,不适用于原地:

根据列表理解中的索引,仅在三元表达式中的替换值或原始值之间做出决定:

def replace_elements(inlist, indexes, replvalue):
    return [replvalue if i in indexes else x for i,x in enumerate(inlist)]

print(replace_elements([1,2,3,4,5,6,7,8],[0,4,3],0))

结果:

[0, 2, 3, 0, 0, 6, 7, 8]

对于大索引列表,[0,4,3]应该是set{0,4,3}),以加快查找速度。

答案 1 :(得分:2)

您将replacment_indicesnew_value放在错误的位置。您应该遍历replacement_indices并将new_value分配给每个指定索引处的列表:

for i in replacement_indices:
   list_a[i] = new_value

由于您就地修改了列表,因此也无需返回任何内容,这意味着循环list_a之后将已经根据规范进行了修改。