Re: How to turn a very long list into smaller lists



On Fri, 30 May 2008 07:30:40 -0700 (PDT), Mel wrote:

I have a list that is very long and I need to break it into smaller
lists of say 50 elements (the original list is a muliple of 50.

as for now I am just using lrange function which is extremy slow on a
long list of say 100000 items.

On my not-very-fast Windows PC, this proc breaks up a
list of 1,000,000 elements into a list of 20,000 fifty-element
lists, in about an eighth of a second. Is that too slow for
you? I was quite impressed...

proc split_list {L {n 50}} {
incr n 0; # thanks to RS for this cool "is it an int" check!
set result {}
set limit [expr {[llength $L] - $n}]
for {set p 0} {$p <= $limit} {incr p $n} {
lappend result [lrange $L $p [expr {$p+$n-1}]]
}
return $result
}

What are you doing that is "extremely slow" ? I suspect
you are doing something that causes the list to be
shimmered back and forth between list and string
representation internally.
--
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@xxxxxxxxxxxxx
http://www.MYCOMPANY.com

The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.
.



Relevant Pages

  • Re: How to turn a very long list into smaller lists
    ... lists of say 50 elements (the original list is a muliple of 50. ... as for now I am just using lrange function which is extremy slow on a ...
    (comp.lang.tcl)
  • How to turn a very long list into smaller lists
    ... lists of say 50 elements (the original list is a muliple of 50. ... as for now I am just using lrange function which is extremy slow on a ... is there an option on the split command to do this? ...
    (comp.lang.tcl)
  • Re: file unsplit?
    ... will be interpreted as a single command whose words are the elements ... That's about the only relationship between lists ... and the parsing of a string as a *list* are two very ... DOULOS - Developing Design Know-how ...
    (comp.lang.tcl)
  • Re: file unsplit?
    ... will be interpreted as a single command whose words are the elements ... That's about the only relationship between lists ... % set L {puts a; ... DOULOS - Developing Design Know-how ...
    (comp.lang.tcl)