2016-06-29 2 views
0

У меня есть списокподсчет количества элементов в списке

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

Я пытаюсь подсчитать, сколько раз каждое слово встречается в списке. Я использовал код

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

Я получаю ошибку

TraceBack (самый последний вызов последнего): Файл "", линия 1, в TypeError: 'INT' объект не итерацию

Что я делаю не так?

+6

удалить 'len' – Sayse

+2

я подозреваю, вам не хватает много цитат в этом списке есть. –

+0

Ваша ДНК немного коротка, я думаю: O –

ответ

3

Для меня это сводится к тому, что означает, что ОП по слово. Моя интерпретация заключается в следующем:

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

производства:

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

Ваша итерационная петля представляет собой концепцию смешивания. Это должно быть только:

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

Вам не нужно делать индексацию.

Это дает мне:

[('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)] 

Не уверен, как интерпретировать это, но, возможно, вы можете. :)

+3

Ваш ответ верный, но ОП определенно кажется, что им нужно понять некоторые фундаментальные концепции Python, прежде чем они будут им полезны. –

1

Вместо того, чтобы использовать для цикла это решение имеет лучшую временную сложность

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) 

Это дает выход здесь

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

Это больше похоже на то, что я думаю, что OP пытается сделать, чем самый высокий рейтинг. –

+0

@cdlane sorry typo error –