On Thu, 22 Apr 2004 09:48:14 -0400, "Neal D. Becker"
<nd*******@verizon.net> wrote:
x = [1,2,3]
for i in x:
i = 2
This doesn't change x. 2 questions:
1) Why not? Why doesn't assign to an iterator of a mutable type change the
underlying object?
2) What is the preferred way to do this?
I'm not sure what you're trying to do, and others have given ideas.
If you're trying to make x a list of 2's having the same length
as x had when you started, you could do this, and avoid the iteration:
x = [1,2,3]
x = len(x) * [2]
Or, if you're trying to set all elements to the average:
x = [1,2,3]
x = len(x) * [1.0 * sum(x) / len(x)]
Or, if you're trying to set all elements to the middle element:
x = [1,2,3]
x = len(x) * [x[len(x) / 2)]]
--dang