easiest way to split a list into evenly divisble smaller lists, and assign them to variables?

Paul Rubin http
Mon Jun 6 03:11:17 EDT 2005


"flamesrock" <flamesrock at gmail.com> writes:
> Lets say I have a list containing 12, 13, 23 or however many entries.
> What I want is the greatest number of lists evenly divisible by a
> certain number, and for those lists to be assigned to variables.

You almost certainly don't want to do that.  That's something
beginning programmers often think of doing, but it's almost always
better to use something more general, like an array.

> consider this code:
> #        my_list=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,
> #                 15,16,17,18,19,20,21,22,23,24,25]
> #        entry=0
> #        dictionary_of_lists = {}
> #        while len(original_list) != 0:

Umm, what's "original_list"?  Do you mean "my_list"?  The rest of
your code has similar errors.

> would give us
> {1:[1,2,3,4],2:[5,6,7,8],
> 3:[9,10,11,12],4:[13,14,15,16],
> 5:[17,18,19,20],6:[21,22,23,24],7:[25]}
> 
> Is there a better way? What I'd like to do is create free variables
> without needing to put them in a dictionary.

Your best bet is probably to create a list of lists:

   sublist_length = 4    # desired length of the "inner" lists
   list_of_lists = []
   for i in xrange(0, len(my_list), sublist_length):
     list_of_lists.append(my_list[i: i+sublist_length])

That gives list_of_lists = 

  [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],
   [13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24], [25]]

So you'd just use list_of_lists[0] to refer to the 1st sublist, etc.



More information about the Python-list mailing list