The iterator is not revaluated, instead, it is constructing a single iterator, in this case a list_iterator. The list_iterator looks at the underyling list to know how to iterate so when you mutate the underlying list, the list_iterator sees that. This does not mee the expression used to generate the iterator was re-evaluated. On Wed, Aug 5, 2015 at 11: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? > _______________________________________________ > Python-Dev mailing list > Python-Dev at python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > https://mail.python.org/mailman/options/python-dev/joe%40quantopian.com > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20150805/27bde02b/attachment.html>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4