Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: HenHanna Newsgroups: comp.lang.python Subject: Re: in Python? -- Chunk -- (ChunkC '(a a b b b)), ==> ((a 2) (b 3)) Date: Sun, 9 Jun 2024 16:16:27 -0700 Organization: A noiseless patient Spider Lines: 44 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Mon, 10 Jun 2024 01:16:28 +0200 (CEST) Injection-Info: dont-email.me; posting-host="fdf3da398add0912fb8385f840f76bc6"; logging-data="4069252"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/rxrjS4EozxXXlRTyjgXd3ssnzAPg5Nj8=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:C57sn9iYu2vK803OpIeSmHRcEco= In-Reply-To: Content-Language: en-US Bytes: 2260 On 6/9/2024 3:50 PM, MRAB wrote: > On 2024-06-09 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)) > > You can make use of itertools.groupby. > Thanks! i'll try it. Scheme (Gauche) (use srfi-1) ; span (define (gp x) (if (null? x) '() (let-values (((F L) (span (cut equal? (car x) <>) x))) (cons F (gp L))))) (print (gp '(a b b a a a b b b b))) (print (gp '(c c c a d d d d a e e e e e)))