如何确定字符串中是否有两个值相邻?

时间:2015-07-16 22:19:00

标签: python if-statement for-loop

(在Python 3中)

def melting_temperature(dna_sequence, formula):
if formula == 'c':
    return melting_temperature_count(dna_sequence)
else:
    modern = melting_temperature_count(dna_sequence)
    for i in len(range(dna_sequence)):
        if dna_sequence[i] == 'a' and dna_sequence[i+1] == 't':
            modern += modern * 0.01
    return modern

我的If语句计算dna_sequence的熔化温度。 在我的Else声明中,它重新运行melting_temperature_count(先前定义的函数)并使用该计算的数字,然后如果' A'则增加1%。和' T'在dna_sequence中相邻。我不知道如何比较索引,但我想出了这个,但是它返回了一个错误     builtins.TypeError:' str' object不能解释为整数 有人可以告诉我,如果两个东西相邻,我怎么看?我希望我解释得这么好。

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助:

def ATadjacentCount(s):
    return len([x for x,y in zip(s,s[1:]) if set((x,y)) == set(('A','T'))])

例如:

>>> ATadjacentCount("ATGTAGTAG")
3

要了解其工作原理,请考虑:

ATGTAGTAG
TGTAGTAG
*  *  * 

如果需要,您当然可以更改为小写。请注意,向数量添加1%相当于将其乘以1.01。如果k是相邻AT对的计数,则可以乘以1.01 ** k - 您不必在循环中进行调整。

答案 1 :(得分:0)

您可以将字符串转换为列表并迭代列表,比较相邻的值,例如

temp = "string" 
lis = list(temp)
for i in range(0, len(lis)-1):
    if lis[i] == 'n' and lis[i+1] == 'i' or lis[i] == 'n' and lis[i-1] == 'i':
            print "Adjacent"