On Mon, 10 Apr 2006, Hoffmann wrote:

> Hello,
> 
> I have a list: list1 =  [ 'spam!', 2, ['Ted', 'Rock']
> ]
> and I wrote the script below:
> 
> i = 0
> while i < len(list1):
>     print list1[i]
>     i += 1
> 
> Ok. This script will generate as the output each
> element of the original list, one per line:
> 
> spam!
> 2
> ['Ted', 'Rock']
> 
> I also would like to print the length of each element
> of that list:
> 
> spam! = 1 element
> 2 = 1 element
> ['Ted', 'Rock'] = 2 elements

Well, the length of "spam!" is 5.  Lengths of strings express the number
of characters.

You could check to see if it's a grouping-type of element -- i.e., a list, 
tuple or set -- but I think your better approach is that, if this is 
something you need, make all of the elements lists, some of which are 
single-item lists; for example, instead of:

 list1 =  [ 'spam!', 2, ['Ted', 'Rock'] ]

use:
 list1 =  [ ['spam!'], [2], ['Ted', 'Rock'] ]

>>> list1 =  [ ['spam!'], [2], ['Ted', 'Rock'] ]
>>> for item in list1:
...  print item, len(item)
...
['spam!'] 1
[2] 1
['Ted', 'Rock'] 2

If your heart is set on the other approach, though, it can be done:

>>> list1 =  [ 'spam!', 2, ['Ted', 'Rock'] ]
>>> for item in list1:
...   if isinstance(item,(list, tuple, set)):
...     print item, len(item)
...   else:
...     print item, 1
...
spam! 1
2 1
['Ted', 'Rock'] 2
>>>

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to