[Tutor] Question about list
Terry Carroll
carroll at tjc.com
Tue Apr 11 00:58:05 CEST 2006
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
>>>
More information about the Tutor
mailing list