[Tutor] Soem list operation questions?

Orri Ganel singingxduck at gmail.com
Tue Dec 28 05:24:38 CET 2004


Hello kilovh.
  
> 1. Is there any easy way to compeltely reverse a list so that the last index
> becomes the first, etc.? 
  
Why, yes. It's the 'reverse' method of lists. ie:

>>> li = [1,2,3,4]
>>> li.reverse()
>>> li
[4, 3, 2, 1]
>>> 

> 2. Is there any way to take seperate integers in a list and combine them
> into digits of one number? (e.g. changing [1,2,3,4] into 1234) 
   
It depends on what you're trying to do. If you want a string, then you
have to do the following:

>>> lista = [1,2,3,4]
>>> lin = ''.join([str(i) for i in li])
>>> lin
'1234'

Similarly, to make an int, just int() it:

>>> lista = [1,2,3,4]
>>> lin = int(''.join([str(i) for i in lista]))
>>> lin
1234

Now, let's look at the line that does all the work.

lin = ''.join([str(i) for i in li])

First things first. The expression: str.join(sequence) is a builtin of
strings which puts together all the elements of a sequence (assuming
the elements are strings), separated by str. In other words,
''.join(["a","b","c"]) returns "abc" (str in this case is an empty
string).

Now, even though lista is already a sequence, it is a sequence of
integers, so join won't work on it as is.  Which is why we use the
list comprehension. [str(i) for i in lista] does a number of things.
First, it makes a list (because it is between brackets), which is a
sequence, for join to work on. Secondly, it fixes the problem with
lista: it makes a sequence of strings, not integers ( [str(i) for i in
lista]   makes a new list with the elements of lista, but stringified
(that would be the technical term :-) )).

HTH,
Orri

> Thank you for your time. 
>   
> ~kilovh 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 
> 
> 


-- 
Email: singingxduck AT gmail DOT com
AIM: singingxduck
Programming Python for the fun of it.


More information about the Tutor mailing list