我正在研究使用搜索的内容,因此每个递归调用都需要一个单独的列表副本,但需要单个元素替换。我想(整齐地)在一行中完成它,到目前为止我有这个在递归调用中:
[new_value if x == replace_index else my_list[x] for x in range(len(my_list))]
但是有没有更简洁的方法来做到这一点,可能会使用我缺少的一些内置函数?
答案 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