2011-12-21 5 views
2

私は検索を使用するものを扱っているので、各再帰呼び出しにはリストの個別のコピーが必要です。潜在的機能に建てられたいくつかを使用して、リストアイテムを置き換えてリストのコピーを(1行で)Pythonで返す

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

しかし、これを行うには滑らかな印象の方法があります:再帰呼び出しに行くた私が1行で(きちんと)それを行うにはしたいと思い、これまでのところ、私はこれを持っています私は行方不明ですか?たぶん

答えて

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:] 

、私は(私は2番目のオプションを好むと思いますおそらくもあります最も速いもの)。

0

それはワンライナーではないが、それはおそらくより読みます:

new_list = old_list[:] 
new_list[replace_index] = new_value 
関連する問題