Ssank
Ssank

Reputation: 3657

counting number of elements in a list

I have a list

my_list = ['TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'AGCTCCCCGTTTTC,AGCTCCCCGTTTTC']

I am trying to count the number of times each word occurs in the list. I used the code

from collections import Counter
for i in len(my_list):
...     Counter(my_list[i]).most_common()
... 

I get the error

Traceback (most recent call last): File "", line 1, in TypeError: 'int' object is not iterable

What am I doing wrong?

Upvotes: 1

Views: 108

Answers (3)

SaiKiran
SaiKiran

Reputation: 6504

Instead of using for loop this solution has better time-complexity

from collections import Counter
my_list = ['TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'AGCTCCCCGTTTTC,AGCTCCCCGTTTTC']

Counter(my_list)

This gives output here

Counter({'TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC': 2, 'AGCTCCCCGTTTTC,AGCTCCCCGTTTTC': 1})

Upvotes: 1

cdlane
cdlane

Reputation: 41862

For me it comes down to what the OP means by word. My interpretation is as follows:

for string in my_list:
    print(Counter(string.split(',')).most_common())

producing:

[('TTATGCTAAGTATC', 8)]
[('TTATGCTAAGTATC', 8)]
[('AGCTCCCCGTTTTC', 2)]

Upvotes: 3

unwind
unwind

Reputation: 399723

Your iteration loop is mixing concepts. It should just be:

for i in my_list:
  Counter(i).most_common()

You don't need to do the indexing.

This gives me:

[('T', 48), ('A', 32), ('C', 16), ('G', 16), (',', 7)]
[('T', 48), ('A', 32), ('C', 16), ('G', 16), (',', 7)]
[('C', 12), ('T', 10), ('G', 4), ('A', 2), (',', 1)]

Not sure how to interpret that, but perhaps you can. :)

Upvotes: 3

Related Questions