python3.6程序实例_计算字符串Python3.6中子串实例的最快方法

我一直在研究一个程序,它需要在主字符串(~400,000个字符)内计运算符字符串(最多4000个位于列表中的2-6个字符的子字符串).我理解这类似于

Counting substrings in a string提出的问题,但是,这个解决方案对我不起作用.由于我的子字符串是DNA序列,因此我的许多子字符串都是单个字符的重复实例(例如’AA’);因此,如果我将字符串拆分为’AA’,’AAA’将被解释为’AA’的单个实例而不是两个实例.我当前的解决方案是使用嵌套循环,但我希望有一个更快的方法,因为这个代码需要5分钟的单个主字符串.提前致谢!

def getKmers(self, kmer):

self.kmer_dict = {}

kmer_tuples = list(product(['A', 'C', 'G', 'T'], repeat = kmer))

kmer_list = []

for x in range(len(kmer_tuples)):

new_kmer = ''

for y in range(kmer):

new_kmer += kmer_tuples[x][y]

kmer_list.append(new_kmer)

for x in range(len(kmer_list)):

self.kmer_dict[kmer_list[x]] = 0

for x in range(len(self.sequence)-kmer):

for substr in kmer_list:

if self.sequence[x:x+kmer] == substr:

self.kmer_dict[substr] += 1

break

return self.kmer_dict

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值