Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!eternal-september.org!feeder.eternal-september.org!newsfeed101.telia.com!starscream.dk.telia.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Tom P Newsgroups: comp.lang.python Subject: Re: looking for a neat solution to a nested loop problem Date: Mon, 06 Aug 2012 21:03:30 +0200 Lines: 46 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net c3i0WZTFpwAXkfP5114iCQS+dgxJzYrEBUV9vrzB1Gbv5hm96JRwDNtZBcnujUNrU= Cancel-Lock: sha1:WQQiCFbrLB9VVapPGDirvqlhkWE= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0 In-Reply-To: Xref: csiph.com comp.lang.python:26647 On 08/06/2012 08:29 PM, Grant Edwards wrote: > On 2012-08-06, Grant Edwards wrote: >> On 2012-08-06, Tom P wrote: >>> On 08/06/2012 06:18 PM, Nobody wrote: >>>> On Mon, 06 Aug 2012 17:52:31 +0200, Tom P wrote: >>>> >>>>> consider a nested loop algorithm - >>>>> >>>>> for i in range(100): >>>>> for j in range(100): >>>>> do_something(i,j) >>>>> >>>>> Now, suppose I don't want to use i = 0 and j = 0 as initial values, but >>>>> some other values i = N and j = M, and I want to iterate through all >>>>> 10,000 values in sequence - is there a neat python-like way to this? >>>> >>>> for i in range(N,N+100): >>>> for j in range(M,M+100): >>>> do_something(i,j) >>>> >>>> Or did you mean something else? >>> >>> no, I meant something else .. >>> >>> j runs through range(M, 100) and then range(0,M), and i runs through >>> range(N,100) and then range(0,N) >> >> In 2.x: >> >> for i in range(M,100)+range(0,M): >> for j in range(N,100)+range(0,N): >> do_something(i,j) >> >> Dunno if that still works in 3.x. I doubt it, since I think in 3.x >> range returns an iterator, not? > > Indeed it doesn't work in 3.x, but this does: > > from itertools import chain > > for i in chain(range(M,100),range(0,M)): > for j in chain(range(N,100),range(0,N)): > do_something(i,j) > > ah, that looks good - I guess it works in 2.x as well?