On Oct 18, 7:31 pm, Terry Reedy <[EMAIL PROTECTED]> wrote: > Gandalf wrote: > > On Oct 18, 12:39 pm, Duncan Booth <[EMAIL PROTECTED]> > > wrote: > >> Gandalf <[EMAIL PROTECTED]> wrote: > >>> how can I do width python a normal for loop width tree conditions like > >>> for example : > >>> for x=1;x<=100;x+x: > >>> print x > >> What you wrote would appear to be an infinite loop so I'll assume you meant > >> to assign something to x each time round the loop as well. The simple > >> Python translation of what I think you meant would be: > > >> x = 1 > >> while x <= 100: > >> print x > >> x += x > > >> If you really insist on doing it with a for loop: > > >> def doubling(start, limit): > >> x = start > >> while x <= limit: > >> yield x > >> x += x > > >> ... > > >> for x in doubling(1, 100): > >> print x > > > I was hopping to describe it with only one command. most of the > > languages I know use this. > > It seems weird to me their is no such thing in python. it's not that I > > can't fined a solution it's all about saving code > > Python: 'makes common things easy and uncommon things possible'. > > The large majority of use cases for iteration are iterating though > sequences, actual and virtual, including integers with a constant step > size. Python make that trivial to do and clear to read. Your example is > trivially written as > > for i in range(11): > print 2**i > > Python provide while loops for more fine-grain control, and a protocol > so *reuseable* iterators can plug into for loops. Duncan showed you > both. If you *need* a doubling loop variable once, you probably need > one more than once, and the cost of the doubling generator is amortized > over all such uses. Any Python proprammer should definitely know how to > write such a thing without hardly thinking. We can squeeze a line out > of this particular example: > > def doubling(value, limit): > while value <= limit: > yield value > value += value > Shouldn't the upper limit be exclusive in order to be Pythonic? -- http://mail.python.org/mailman/listinfo/python-list