On Mon, Aug 20, 2007 at 03:14:24PM -0300, Ricardo Ar?oz wrote: [snip] > > You just work on a generated modified list. > > > > foo = range(1,6) > > for i in [x*2 for x in foo]: > > do_whatever_you_want_with(i) > > > > What about : > > array = [1,2,3,4,5] > array = [i * 2 for i in array] >
Good solution. However, consider the following: >>> array = [1,2,3,4,5] >>> array2 = array >>> array = [i * 2 for i in array] >>> array [2, 4, 6, 8, 10] >>> array2 [1, 2, 3, 4, 5] So, did you want array2 to change, or not? Your solution is a good one for situations where you do *not* want array2 to change. Here is a solution that changes the object that both array and array2 refer to: >>> array = [1, 2, 3, 4, 5] >>> array2 = array >>> for idx, item in enumerate(array): array[idx] = item * 2 >>> array [2, 4, 6, 8, 10] >>> array2 [2, 4, 6, 8, 10] Basically, this modifies the list "in place", rather than making a new list from the old one. Dave -- Dave Kuhlman http://www.rexx.com/~dkuhlman _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor