Re: how to write a C-style for loop?
- From: Steven D'Aprano <steve@xxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 15 Feb 2006 23:37:52 +1100
On Wed, 15 Feb 2006 10:20:13 +0000, ZeD wrote:
Ciao, John Salerno! Che stavi dicendo?
for (int i = 0; i < 50; i += 5)
How would that go in Python, in the simplest and most efficient way?
i=0
while i<50:
#...
i+=5
That's exceedingly unPythonic. In fact I'd go far to say it is bad
practice in just about any programming language that has for loops. Why on
earth would any sensible programmer want to manage the loop variable by
hand if the language can do it for you?
about range()/xrange(): what if you want to traslate this c-loop? for
(int i=1; i<50; i*=2)
That's a completely different question, so of course it has a completely
different answer. Here is one way:
for i in [2**n for n in range(6)]:
do_something(i)
Here is another:
for i in range(int(math.log(50)/math.log(2)+1)):
do_something(2**i)
Here is a third way:
i = 1
while i < 50:
do_something(i)
i *= 2
Here is a fourth way:
import operator
def looper(start, (op, finish), (op2, x)):
n = start
while op(n, finish):
yield n
n = op2(n, x)
loop = looper(1, (operator.__lt__, 50), (operator.__mul__, 2))
for i in loop:
do_something(i)
--
Steven.
.
- Follow-Ups:
- Re: how to write a C-style for loop?
- From: bearophileHUGS
- Re: how to write a C-style for loop?
- From: Duncan Booth
- Re: how to write a C-style for loop?
- References:
- how to write a C-style for loop?
- From: John Salerno
- Re: how to write a C-style for loop?
- From: ZeD
- how to write a C-style for loop?
- Prev by Date: Re: Embedding an Application in a Web browser
- Next by Date: Re: Rethinking the Python tutorial
- Previous by thread: Re: how to write a C-style for loop?
- Next by thread: Re: how to write a C-style for loop?
- Index(es):
Relevant Pages
|