我有一個 DNA 序列:
seq='AACGTTCAA'
我想數一數有多少個字母等於下一個。在這個例子中,我應該得到 3(因為 AA-TT-AA)。
在我的第一次嘗試中,我發現這不起作用,因為 i 是一個字符串而 1 是一個整數。
seq='AACGTTCAA'
count=[]
for i in seq:
if i == i+1: #neither i+=1
count.append(True)
else: count.append(False)
print(sum(count))
所以我試過這個:
seq='AACGTTCAA'
count=[]
for i in seq:
if i == seq[seq.index(i)+1]:
count.append(True)
else: count.append(False)
print(sum(count))
然後我收到這個我無法理解的輸出。其中 3 個 True 應該是 False (1,5,8) 特別是 8 個,因為它是字符串的最後一個元素。
6
[True, True, False, False, True, True, False, True, True]
如果考慮使用數組執行此操作,但我認為可能有一種簡單的方法可以僅在字符串中執行此操作。謝謝
為了回答您的問題,seq 中的 i 語句會產生一系列字符串變量,例如“A”、“A”、“C”等。因此,在您嘗試比較的第一種情況下,您i == i+1:
將向字符串添加 1拋出 TypeError 的變量。在您的第二個示例中,您執行的位置if i == seq[seq.index(i)+1]
給出了錯誤的結果,因為 seq.index(i) 始終返回該值的第一次出現。要在基本級別上做您想做的事情,您可以執行以下操作:
def countPairedLetters(seq):
count = 0
for i in range(1, len(seq)):
# i starts with 1 and ends with len(seq)-1
if seq[i-1] == seq[i]:
count += 1
return count
注意:通過從索引 1 開始並持續到最後,您可以避免超出序列的問題。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句