Fun python 3.2 one-liner

Raymond Hettinger python at rcn.com
Wed Mar 30 19:39:04 EDT 2011


On Mar 30, 2:19 am, Martin De Kauwe <mdeka... at gmail.com> wrote:
> what is the character limit on a one liner :P. Very interesting
> jesting apart, any more?

Sure, here are three one-liners using itertools.groupby() to emulate
some Unix pipelines:

  sort letters | uniq       # list unique values
  sort letters | uniq -c    # count unique values
  sort letters | uniq -d    # find duplicates

>>> from itertools import groupby

>>> [k for k, g in groupby(sorted('abracadabra'))]
['a', 'b', 'c', 'd', 'r']

>>> [(k, len(list(g))) for k, g in groupby(sorted('abracadabra'))]
[('a', 5), ('b', 2), ('c', 1), ('d', 1), ('r', 2)]

>>> [k for k, g in groupby(sorted('abracadabra')) if len(list(g)) > 1]
['a', 'b', 'r']


Raymond


P.S.  Of course, there are many ways to do this.

>>> sorted(set('abracadabra'))
['a', 'b', 'c', 'd', 'r']

>>> sorted(Counter('abracadabra').items())
[('a', 5), ('b', 2), ('c', 1), ('d', 1), ('r', 2)]

>>> sorted(k for k,c in Counter('abracadabra').items() if c > 1)
['a', 'b', 'r']



More information about the Python-list mailing list