Python,将字符串分成几个子字符串

2024-10-01 13:29:44 发布

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

我有一串核糖核酸,即:

AUGGCCAUA

我希望通过以下方式生成所有子字符串:

^{pr2}$

我写了一个代码来解决第一个子问题:

for i in range(0,len(rna)):
  if fmod(i,3)==0:
    print rna[i:i+3]

我试图改变起始位置,即:

 for i in range(1,len(rna)):

但结果却不正确:

 GCC, UA #instead of UGG, CCA

你能告诉我我的错误在哪里吗?在


Tags: 字符串代码inforlenif方式range
3条回答

代码的问题是,总是从可被3整除的索引中提取子字符串。相反,试试这个

a = 'AUGGCCAUA'
def getSubStrings(RNA, position):
    return [RNA[i:i+3] for i in range(position, len(RNA) - 2, 3)]

print getSubStrings(a, 0)
print getSubStrings(a, 1)
print getSubStrings(a, 2)

输出

^{pr2}$

说明

range(position, len(RNA) - 2, 3)将生成一个具有公共差3的数字列表,从position开始,直到列表的长度-2。例如

print range(1, 8, 3)

1是起始数,8是最后一个数,3是共同的区别,它将给出

[1, 4, 7]

这些是我们的起始指数。然后我们使用list comprehension生成如下新列表

[RNA[i:i+3] for i in range(position, len(RNA) - 2, 3)]

我想到了一条线:

a = 'AUGGCCAUA'
[a[x:x+3] for x in range(len(a))][:-2]

这就是你要找的吗?在

for i in range(len(rna)):
    if rna[i+3:]:
        print(rna[i:i+3])

输出:

^{pr2}$

相关问题 更多 >