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