【问题标题】:randomly seek a small sequence of a particular length in a larger sequence in python在python中的较大序列中随机寻找特定长度的小序列
【发布时间】:2015-09-29 18:41:12
【问题描述】:

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

我尝试了以下代码:

import system
import random

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

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

【问题讨论】:

  • “它从 X 中选择 4 个不同的元素” - 这正是您所要求的!你想要start = random.randrange(len(X) - 4); X[start:start+4]这样的东西吗?

标签: python random choice


【解决方案1】:

不要尝试使用 random.choiceX 中选择一个字符,如果您想要连续的长度为 4 的序列,请选择一个介于 0 和长度之间的索引 X - 4 ,然后从那个索引。示例 -

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

【讨论】:

  • 很高兴我们能提供帮助!我还想请您接受答案(通过单击左侧的勾号),这将对社区有所帮助
【解决方案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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 2021-12-31
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多