[Python-Dev] who must makes FOR loop quicker

Chris Angelico rosuav at gmail.com
Wed Aug 5 17:56:50 CEST 2015


On Thu, Aug 6, 2015 at 1:25 AM, John Doe <z2911 at bk.ru> 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 me, PLEASE, improve the answer:
> Does it appropriate ALWAYS REevaluate the terms of the expression list in
> FOR-scope on each iteration?
> But if I want to pass ONCE a copy to FOR instead of a reference (as seen
> from an output) and reduce unreasonable reevaluation, what I must to do for
> that?

This list is for the development *of* Python, rather than development
*with* Python. If you repost your question to python-list at python.org
(the main user list), I'll be happy to explain over there what's going
on and how to sort this out! But the simple answer is: Don't mutate
the thing you're iterating over. You can take a copy with xlist[:] and
iterate over that, if you like.

ChrisA


More information about the Python-Dev mailing list