On 6/10/2024 6:29 AM, Rob Cliffe wrote:
import itertools

def chunk1(seq):
     return [ ch * len(list(grp)) for (ch, grp) in itertools.groupby(s) ]

def chunk2(seq):
     return [ (ch, len(list(grp))) for (ch, grp) in itertools.groupby(s) ]

s='aaabbccccaa'
print(chunk1(s))
print(chunk2(s))
###################################
Program output:
['aaa', 'bb', 'cccc', 'aa']
[('a', 3), ('b', 2), ('c', 4), ('a', 2)]

Rob Cliffe



thank you...   OMG... For 10 minutes... i was SO mystified by
the question...
                How can this code work??? ,  when it's
                  > def chunk1(seq):
                     and it's  [s]   within the def-body ?

it seemed as if the Compiler was doing a DWIM (Do what i mean)  trick.



On 09/06/2024 22:20, HenHanna via Python-list wrote:

Chunk, ChunkC -- nice simple way(s) to write these in Python?


(Chunk  '(a a   b    a a a   b b))
    ==> ((a a) (b)  (a a a) (b b))


(Chunk  '(a a a a   b   c c   a a   d   e e e e))
    ==> ((a a a a) (b) (c c) (a a) (d) (e e e e))


(Chunk  '(2 2   foo   bar bar   j j j   k   baz baz))
    ==> ((2 2) (foo) (bar bar) (j j j) (k) (baz baz))

_________________

(ChunkC  '(a a   b b b))
     ==> ((a 2)  (b 3))

(ChunkC  '(a a   b      a a a   b b))
     ==> ((a 2)  (b 1)  (a 3)   (b 2))


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to