counting items
It's me
itsme at yahoo.com
Wed Jan 12 13:31:06 EST 2005
Oh, darn. I asked this kind of question before. <plonk, plonk>
Somebody posted an answer before:
def flatten(seq):
for x in seq:
if hasattr(x, "__iter__"):
for subx in flatten(x):
yield subx
else:
yield x
data = [[1,5,2],8,4]
val_to_pos = {}
for i, x in enumerate(flatten(data)):
val_to_pos[x] = i + 1
print val_to_pos
"It's me" <itsme at yahoo.com> wrote in message
news:ukdFd.10645$5R.2000 at newssvr21.news.prodigy.com...
> Okay, I give up.
>
> What's the best way to count number of items in a list?
>
> For instance,
>
> a=[[1,2,4],4,5,[2,3]]
>
> I want to know how many items are there in a (answer should be 7 - I don't
> want it to be 4)
>
> I tried:
>
> b=len([x for y in a for x in y])
>
> That doesn't work because you would get an iteration over non-sequence.
>
> I tried:
>
> g=lambda x: (1,len(x))[isinstance(x,(list,tuple,dict))]
> b=sum(lambda(x) for x in a)
>
> and that didn't work because I get a TypeError from the len function
(don't
> know why)
>
> I can, of course:
>
> i=0
> for x in a:
> if isinstance(x,(list,tuple,dict)):
> i += len(x)
> else:
> i += 1
>
> but that's so C-like...
>
> Thanks,
>
>
More information about the Python-list
mailing list