2015-12-08 45 views
-1

在我的代碼中有一個問題,因爲我無法和列表進行比較。我試圖做的是首先尋找輸入的第一個索引,然後如果索引不一樣尋找更長的輸入的下一個索引,我猜想1。 (AC)(AA)(AT)然後(CA)(CT)..然後(TT)...然後在完成比較第一個索引元素後,我想比較第二個索引。 ,並希望一個輸入列表作爲(A,T)因爲guess1的ATT部分.. 然而我卡住了一瞬間,我總是發現ACT不是A和T .. 我在哪裏錯了..我會很高興如果你開導我..我如何搜索兩個整數中的常見元素while循環

編輯.. 我想要做的就是尋找guess1的長列表中選擇最佳的相似性,並找到最similiar列表,​​ATT

GUESS1="CATTCG" 
GUESS2="ACT" 
if len(str(GUESS1))>len(str(GUESS2)): 
     DNA_input_list=list((GUESS1)) 
     DNA_input1_list=list((GUESS2)) 
     common_elements=[] 
     i=0 
     while i<len(DNA_input1_list)-1: 
      j=0 
      while j<len(DNA_input_list)-len(DNA_input1_list): 
       if DNA_input_list[i] == DNA_input1_list[j]: 
        common_elements.append(DNA_input1_list[j]) 
        i+=1 
       j+=1 
       if j>len(DNA_input1_list)-1: 
        break 
     print(common_elements) 
+0

所以你試圖找到'GUESS2'的索引來查看它是否在'GUESS1'中?所以你試圖在兩個不同的列表中找到重複項? – ruthless

+1

你的代碼遠不是自明性的,你的問題文本沒有多大幫助。你能否更簡單地解釋和解釋你想要做的事情? –

+0

thanx爲答案..其實我試圖做的是尋找兩個列表的相似性,我試圖這樣..我的意思是我想程序搜索作爲猜測2的長度,並返回最相似的列表 –

回答

1

據據我所知,你想f在較長的子字符串中輸入較短的子字符串,如果未找到,則從較短的子字符串中移除一個元素,然後重複搜索。

你可以在python中使用字符串查找功能。即"CATTCG".find('ACT'),這個函數將返回-1,因爲沒有替換ACT。什麼然後就可以做的是使用切片操作者[::]從較短的字符串中刪除的元素,並重復這樣的搜索 - 這裏

>>> for x in range(len('ACT')): 
...  if "CATTCG".find('ACT'[x:]) > -1 : 
...    print("CATTCG".find('ACT'[x:])) 
...    print("Match found for " + 'ACT'[x:]) 

在代碼中,第一個產生一個長度範圍即[0,1,2 ,3]這是我們從一開始就要切掉的項目數量。在第二行我們用'ACT'[x:](對於x == 0,我們得到'ACT',對於x == 1,我們得到'CT'並且對於x == 2,我們得到'T')。

最後兩行打印出匹配的位置和字符串。

0

如果我已經正確理解了所有內容,您希望返回GUESS2中最長的相似子字符串,並且包含在GUESS1中。

我會用這樣的東西。

<!-- language: lang-py --> 
for count in range(len(GUESS2)): 
     if GUESS2[:count] in GUESS1: 
       common_elements = GUESS2[:count] 
print(GUESS2[:count]) #if a function, return GUESS2[:count] 

只要從搜索字符串中計數一個循環即可。
然後檢查其他字符串是否包含在其中。
如果是這樣,請將其保存到變量並在循環結束後打印/返回。