替换列表项并使用Python返回列表的副本(在一行中)

时间:2011-12-21 18:13:55

标签: python list replace copy

我正在研究使用搜索的内容,因此每个递归调用都需要一个单独的列表副本,但需要单个元素替换。我想(整齐地)在一行中完成它,到目前为止我有这个在递归调用中:

[new_value if x == replace_index else my_list[x] for x in range(len(my_list))]

但是有没有更简洁的方法来做到这一点,可能会使用我缺少的一些内置函数?

2 个答案:

答案 0 :(得分:2)

也许是这样的:

[new_value if i == replace_index else element
 for i, element in enumerate(my_list)]

或:

new_list = my_list[:]
new_list[replace_index] = new_value

或:

new_list = my_list[:replace_index] + [new_value] + my_list[replace_index+1:]

在这种情况下,我认为我更喜欢第二种选择(可能也是最快的选择)。

答案 1 :(得分:0)

这不是一个单行,但它可能更具可读性:

new_list = old_list[:]
new_list[replace_index] = new_value