
Hi python-ideas. I think it would be nice to have a method in 'list' to replace certain elements by others in-place. Like this: l = [x, a, y, a] l.replace(a, b) assert l == [x, b, y, b] The alternatives are longer than they should be, imo. For example: for i, n in enumerate(l): if n == a: l[i] = b Or: l = [b if n==a else n for n in l] And this is what happens when someone tries to "optimize" this process. It totally obscures the intention: try: i = 0 while i < len(l): i = l.index(a, i) l[i] = b i += 1 except ValueError: pass If there is a reason not to add '.replace' as built-in method, it could be implemented in pure python efficiently if python provided a version of '.index' that returns the index of more than just the first occurrence of a given item. Like this: l = [x, a, b, a] for i in l.indices(a): l[i] = b So adding .replace and/or .indices… Good idea? Bad idea?