在python中,随机地在较大的序列中寻找特定长度的小序列

2024-09-29 23:32:32 发布

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

我想从一个较大的序列中随机寻找一个长度为4的子序列

我尝试了以下代码:

import system
import random

    X = 'ATGCATGCTAGCTAGTAAACGTACGTACGTACGATGCTAATATAGAGGGGCTTCGTACCCCTGA'
    Y = [random.choice(X) for i in range(4)]
    print(Y)

但它从X中选择了4个不同的元素,而不是一个长度为4的连续序列


Tags: 代码inimport元素forrange序列random
2条回答

您可以随机选择一个起始索引,然后使用切片来提取该子字符串

def random_slice(s, n):
    index = random.randint(0, len(s)-n)
    return s[index : index + n]

>>> random_slice(X, 4)
'GCTA'
>>> random_slice(X, 4)
'CGTA'
>>> random_slice(X, 4)
'TATA'
>>> random_slice(X, 4)
'AGCT'

如果希望序列长度为4的连续性,请选择一个介于0和长度为X-4之间的索引,并从该索引中获取4个元素,而不是尝试使用random.choiceX中选择字符。示例-

>>> X = 'ATGCATGCTAGCTAGTAAACGTACGTACGTACGATGCTAATATAGAGGGGCTTCGTACCCCTGA'
>>> import random
>>> i = random.randint(0,len(X)-4)
>>> X[i:i+4]
'TGCA'
>>> i
1

相关问题 更多 >

    热门问题