<p>我不确定我是否能正确回答你的问题,但假设你得到的值是某种基因回文,然后你希望找到每个值的下两个值(如果我错了,请纠正我),简单的解决方案是这样的:</p>
<pre><code>sequence="GATCTCTATACCAACTCAAAATGAAGACTCTTCTTTACACTTTCGAGCTCAGCAGGCTTACCGAGAAGAGTCGTCGTTCACATCCCCCCCTGTGCGAGATCAAGAAATTTGGCGACGTCGGCTTATTATCCTCCGCTGTCAATCAGTTGGACACATCTCTCCGGTCACTGCCGGACAAGCCAACCGAAGATTCGATTCTTCAGCAGCTTATCGACATTGCTGGTGGTGAAAAGCCAAGGCACAGCATCATAGTTGCGACCAATACGTCATACGACCGAGAGACATTGGTAAAGATCCTTCAACGATTCCCATACACCATACCTGGTCTGTCAGATTCAGGCTTGGAATCAGAAACACTCGAGGCTCTTGAGCACATCGCTTTTGCATTAGCCGGGCGATTAGCTCATAGATTTGACTACGGGTTCAATCCAGAGGCCAGTATCGTTCAACACCTCGAGATGTTCACCACCCTTTGGCACCAAAGATCTGCATTACCACCTGCGCCTGCCCCGTATCGACTTCCCGTTCCCGTCAATCAAGGAAGAGTCTCCTCATCAGATGATGGCTCTGATACTGAGTCAGAACTGGATGAAAAATACCACAACATCAAGAAGTCAGGACTTTGGAGGTTTCTGGATATGTTCAAAATGAACTTCAAGAGGTCTTAGATAACGGTCTAGTTCTAGTTCTGCAACTCACACTGA"
pairs = {"A":"T", "T":"A", "G":"C", "C":"G"}
keeper = []
for i in range(len(sequence) - 6 + 1):
pal = True
for j in range(2):
if pairs[ sequence[i+j] ] != sequence[i+5-j]:
pal = False
break
if pal:
the_sequence = sequence[i : i+6]
# print(the_sequence)
keeper.append((the_sequence, (i, i+6)))
possible_ends = [a+'CC' for a in "ATCG"]
possible_ends.extend([a+'GG' for a in "ATCG"])
final = []
for val in keeper:
temp = val[0]+sequence[val[1][1]:val[1][1]+3]
temp_list = [temp.endswith(a) for a in possible_ends]
if any(temp_list):
final.append(temp)
else:
pass
print(final)
</code></pre>
<p>输出:</p>
<pre><code>['GCCTGCCCC', 'GAAGTCAGG']
</code></pre>
<p>我希望并相信这是理想的产出</p>