我想用新值替换替换索引中给定位置的列表中的元素。例如,如果给定列表为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
答案 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_indices
和new_value
放在错误的位置。您应该遍历replacement_indices
并将new_value
分配给每个指定索引处的列表:
for i in replacement_indices:
list_a[i] = new_value
由于您就地修改了列表,因此也无需返回任何内容,这意味着循环list_a
之后将已经根据规范进行了修改。