On 24/03/2016 14:08, Jon Ribbens wrote:
On 2016-03-24, BartC <b...@freeuk.com> wrote:
On 24/03/2016 13:50, Steven D'Aprano wrote:
Likewise clearing a list:

for i in range(len(mylist)-1, -1, 0):
      del mylist[i]

That's wouldn't be I'd call clearing a list, more like destroying it
completely!

How would you actually clear a list by traversing it (ie. not just
building a new one)?

This doesn't work:

    for x in L:
       x=0

as each x only refers to the value in each element of L, not the element
itself (like the pass-by-reference problem).

I'd presumably have to do:

   for i in range(len(L)):
     L[i]=0

That's kind've a weird thing to want to do;

The thing I'm trying to demonstrate is changing an element of a list that you are traversing in a loop. Not necessarily set all elements to the same value.

 if you thought you needed
to do that then most likely what you should actually be doing is
re-writing your code so you no longer need to. However, you could do:

   L[:] = [0] * len(L)

OK, but that's just building a new list as I've already mentioned.

Or is the Pythonic way, when you want to change some elements of a list to just build a new one that incorporates those changes?

--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to