Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #74309

Re: Help me write better Code

Newsgroups comp.lang.python
Date 2014-07-10 07:39 -0700
References <3a608dd2-d8bf-429e-af21-ce5ac8f18272@googlegroups.com> <mailman.11695.1404920643.18130.python-list@python.org>
Message-ID <63a40b77-f3d5-45b4-bd11-ff9c099bdb67@googlegroups.com> (permalink)
Subject Re: Help me write better Code
From sssdevelop <sssdevelop@gmail.com>

Show all headers | View raw


Mark - thank you so much. You have suggested be new best tool/module. 
It's going to help me many places. Was not aware of such powerful tool. 

thank you,



On Wednesday, July 9, 2014 9:14:01 PM UTC+5:30, Mark Lawrence wrote:
> On 09/07/2014 15:27, sssdevelop wrote:
> 
> > Hello,
> 
> >
> 
> > I have working code - but looking for better/improved code. Better coding practices, better algorithm :)
> 
> >
> 
> > Problem: Given sequence of increasing integers, print blocks of consecutive integers.
> 
> >
> 
> > Example:
> 
> >
> 
> > Input: [10, 11, 12, 15]
> 
> > Output: [10, 11, 12]
> 
> >
> 
> > Input: [51, 53, 55, 67, 68, 91, 92, 93, 94, 99]
> 
> > Outout: [67, 68], [91, 92, 93, 94]
> 
> >
> 
> > My code looks as below:
> 
> > -----------------------------
> 
> > #!/usr/bin/python
> 
> > a = [51, 53, 55, 67, 68, 91, 92, 93, 94, 99]
> 
> > #a = []
> 
> > #a = [10]
> 
> > #a = [10, 11, 12, 15]
> 
> > print "Input: "
> 
> > print  a
> 
> >
> 
> > prev = 0
> 
> > blocks = []
> 
> > tmp = []
> 
> > last = 0
> 
> > for element in a:
> 
> >     if prev == 0:
> 
> >        prev = element
> 
> >        next
> 
> >     if element == prev + 1:
> 
> >         if tmp:
> 
> >             pass
> 
> >         else:
> 
> >             tmp.append(prev)
> 
> >         tmp.append(element)
> 
> >     else:
> 
> >         if tmp:
> 
> >            blocks.append(tmp)
> 
> >         tmp = []
> 
> >
> 
> >     prev = element
> 
> >
> 
> > if tmp:
> 
> >      blocks.append(tmp)
> 
> >
> 
> > if blocks:
> 
> >      #print "I have repeated elements and those are:"
> 
> >      for b in blocks:
> 
> >          print b
> 
> >
> 
> > -----------------------
> 
> >
> 
> > thank you in advance!
> 
> >
> 
> 
> 
> Adopted from here https://docs.python.org/3.0/library/itertools.html
> 
> 
> 
> data = [51, 53, 55, 67, 68, 91, 92, 93, 94, 99]
> 
> for k, g in groupby(enumerate(data), lambda t:t[0]-t[1]):
> 
>      group = list(map(operator.itemgetter(1), g))
> 
>      if len(group) > 1:
> 
>          print(group)
> 
> 
> 
>  >>>
> 
> [67, 68]
> 
> [91, 92, 93, 94]
> 
>  >>>
> 
> 
> 
> -- 
> 
> My fellow Pythonistas, ask not what our language can do for you, ask 
> 
> what you can do for our language.
> 
> 
> 
> Mark Lawrence
> 
> 
> 
> ---
> 
> This email is free from viruses and malware because avast! Antivirus protection is active.
> 
> http://www.avast.com

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Help me write better Code sssdevelop <sssdevelop@gmail.com> - 2014-07-09 07:27 -0700
  Re: Help me write better Code Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-07-09 16:44 +0100
    Re: Help me write better Code sssdevelop <sssdevelop@gmail.com> - 2014-07-10 07:39 -0700
      Re: Help me write better Code Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-07-10 15:51 +0100
    Re: Help me write better Code Rustom Mody <rustompmody@gmail.com> - 2014-07-10 11:38 -0700
  Re: Help me write better Code Ian Kelly <ian.g.kelly@gmail.com> - 2014-07-09 12:16 -0600
    Re: Help me write better Code sssdevelop <sssdevelop@gmail.com> - 2014-07-10 07:38 -0700
  Re: Help me write better Code Terry Reedy <tjreedy@udel.edu> - 2014-07-09 14:46 -0400
    Re: Help me write better Code sssdevelop <sssdevelop@gmail.com> - 2014-07-10 07:38 -0700

csiph-web