计算Python字符串中出现的字母数
所以我得到了一个DNA序列计算Python字符串中出现的字母数,python,string,Python,String,所以我得到了一个DNA序列 ACCAGAGCGGCACAGCAGCGACATCAGCACTAGCACTAGCATCAGCATCAGCATCAGC CTACATCATCACAGCAGCATCAGCATCGACATCAGCATCAGCATCAGCATCGACGACT ACACCCCCCCCGGTGTGTGTGGGGGGTTAAAAATGATGAGTGATGAGTGAGTTGTGTG CTACATCATCACAGCAGCATCAGCATCGACATCAGCATCAGCATCAGCATCGACGACT
ACCAGAGCGGCACAGCAGCGACATCAGCACTAGCACTAGCATCAGCATCAGCATCAGC
CTACATCATCACAGCAGCATCAGCATCGACATCAGCATCAGCATCAGCATCGACGACT
ACACCCCCCCCGGTGTGTGTGGGGGGTTAAAAATGATGAGTGATGAGTGAGTTGTGTG
CTACATCATCACAGCAGCATCAGCATCGACATCAGCATCAGCATCAGCATCGACGACT
TTCTATCATCATTCGGCGGGGGGATATATTATAGCGCGCGATTATTGCGCAGTCTACG
TCATCGACTACGATCAGCATCAGCATCAGCATCAGCATCGACTAGCATCAGCTACGAC
我需要数一数基数
出于某种原因,它有时可以在同一个字符串中交替使用大写或小写。出于好奇,您是否有理由不使用sequence.lower().count(base.lower())来代替?我猜这是为了让它更快,但我不是100%确定。这样不一定更快,但占用的内存更少。由于DNA序列可能很长,这一点很重要。是的,因为你无论如何都需要做两次传递,所以最好让两次都计算一次(内存节约),而不是让一次占用额外的临时内存。如果您确实有空闲内存,则循环外的单个
tmp=sequence.lower()
(然后以小写形式循环'acgt'
只执行tmp.count(base)
)会更快。在不区分大小写的RE上使用finditer进行单次传递可能最快,但比这些方法简单得多;-)。请用[家庭作业]标签标记家庭作业。我认为这个问题很好。即使是家庭作业,也是一个有趣的问题。为什么不在这里问呢+从我这里得到1
for base in 'ACGT':
print base, thesequence.count(base) + thesequence.count(base.lower())