On Thu, Jul 02, 2015 at 10:20:16PM +0200, Pierre Quentel wrote:
Both stress that range is most often used in a for loop (it doesn't "happens to sometimes be used" in for loops, and is rarely used for membership testing).
You have misunderstood me. I'm not saying that range necessarily has many widespread and common uses outside of for-loops, but that for-loops only sometimes use range. Most loops iterate directly over the iterable, they don't use a range object at all. You started this thread with an example from Javascript. For loops in Javascript can be extremely general: js> for(var i=1,j=0,k=2; i < 100; j=2*i, k-=1, i+=j+k){print([i,j,k])} 1,0,2 4,2,1 12,8,0 35,24,-1 Why try to force all that generality into the range function? There are really two issues here: (1) Is there a problem with Python that it cannot easily or reasonable perform certain for-loops that Javascript makes easy? (2) Is modifying range() the right way to solve that problem? I don't think you have actually demonstrated the existence of a problem yet. True, Javascript gives you a nice, compact, readable syntax for some very general loops, but Python has its own way of doing those same loops which may not be quite as compact but are probably still quite acceptable. But even if we accept that Javascript for-loops are more powerful, more readable, and more flexible, and that Python lacks an acceptable way of performing certain for-loops that Javascript makes easy, changing range does not seem to be the right way to fix that lack. -- Steve