Python在大列表中查找kmers

2024-04-25 22:51:22 发布

您现在位置:Python中文网/ 问答频道 /正文

如何修改下面的代码,使其不包含单个字符串作为输入,而是包含一系列字符串作为输入?我在试着找出一系列DNA序列的所有Kmer。在

def kmer_count(dna, k):
    f = {}
    for x in range(len(dna)+1-k):
        kmer = dna[x:x+k]
        f[kmer] = f.get(kmer, 0) + 1
    return(f)

我的意见:

^{pr2}$

显然,由于实际原因,我不能连续地为函数kmer_count逐个分配每个字符串(我的列表很大)。在


Tags: 字符串代码inforgetlenreturndef
1条回答
网友
1楼 · 发布于 2024-04-25 22:51:22

可以使用多参数传递(*args)将多个参数传递给函数,并使用yield返回包含所有字典的生成器:

def kmer_count(k,*args):
  f = {}
  for dna in args: 
    for x in range(len(dna)+1-k):
        kmer = dna[x:x+k]
        f[kmer] = f.get(kmer, 0) + 1
    yield(f)

如果您想以列表形式获得结果,可以使用list将迭代器转换为列表:

^{pr2}$

但是作为一种更具Python式的方式,你可以使用itertools.islice和{}:

^{3}$

相关问题 更多 >