On 05/08/2015 08:53, John Doe wrote:
To pass by reference or by copy of - that is the question from hamlet.
("hamlet" - a community of people smaller than a village python3.4-linux64)

xlist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
i = 0
for x in xlist:
     print(xlist)
     print("\txlist[%d] = %d" % (i, x))
     if x%2 == 0 :
         xlist.remove(x)
     print(xlist, "\n\n")
     i = i + 1

So, catch the output and help, PLEASE, me improve the answer:
Does it appropriate ALWAYS reevaluate the terms of the list on each
iteration?
But if I want to pass a copy to FOR instead of a reference (as seen from
an output) and reduce unreasonable reevaluation, what I must to do for
that?

From https://docs.python.org/3/tutorial/introduction.html#lists, but chopped around a little:-

<quote>
All slice operations return a new list containing the requested elements. This means that the following slice returns a new (shallow) copy of the list:

>>> squares = [1, 4, 9, 16, 25]
>>> squares[:]
[1, 4, 9, 16, 25]
</quote>

Hence:-

for x in xlist[:]:
  etc.

--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to