我正在寻找一个有效的python解决方案来解决以下问题。我有一个DNA序列,想在字符串中选择一个随机位置,满足某个三元组模式的中间位置。例如,如果DNA串是";ACTGTGACTACTGGGGG";,三元组是";ACT";,我想随机返回位置1、7、10中的一个。
您可以使用re.finditer
查找子字符串匹配的所有索引,然后使用random.choice
选择其中一个索引。
>>> import re
>>> import random
>>> s = 'ACTGTGACTACTGGGGG'
>>> f = 'ACT'
>>> indices = [m.start() for m in re.finditer(f, s)]
>>> random.choice(indices)
0
>>> random.choice(indices)
9
请注意,Python中的索引是基于0的,因此在您的示例中,有效的起始位置是0
、6
和9
。