我无法获得字符串中具有n长度的子字符串的出现次数。例如,如果字符串是
CCCATGGTtaGGTaTGCCCGAGGT
和n是
3
输出必须是:
'CCC' : 2, 'GGT' :3
输入是一个列表列表,所以我得到了evry的列表,但我无法继续,输出是所有字符串的序列
代码:
def get_all_n_repeats(n,sq_list):
reps={}
for i in sq_list:
if not i:
continue
else:
for j in i:
........#Here the code I want to do#......
return reps
答案 0 :(得分:2)
一个非常简单的解决方案:
from collections import Counter
st = "CCCATGGTtaGGTaTGCCCGAGGT"
n = 3
tokens = Counter(st[i:i+n] for i in range(len(st) - n + 1))
print tokens.most_common(2)
由你来决定它是一个辅助功能。
答案 1 :(得分:1)
使用Counter
from collections import Counter
def count_occurrences(input, n):
candidates = []
for i, c in enumerate(st):
try:
candidates.append('{}{}{}'.format(st[i], st[i+1], st[i+2]))
except IndexError:
continue
output = {}
for k,v in Counter(candidates).items():
if v > 1:
output[k] = v
st = "CCCATGGTtaGGTaTGCCCGAGGT"
n = 3
count_occurrences(st, n)
# {'GGT': 3, 'CCC': 2}
答案 2 :(得分:1)
一个非常明确的解决方案:
s = 'CCCATGGTtaGGTaTGCCCGAGGT'
n = 3
# All possible n-length strings
l = [s[i:i + n] for i in range(len(s) - (n - 1))]
# Count their distribution
d = {}
for e in l:
d[e] = d.get(e, 0) + 1
print(d)