2013-10-03 56 views
0

該函數打印多個值,它們是字符串z的索引,但是我想存儲這些值,並且使用return將終止函數,只留下幾個第一個值。從python的單個函數中存儲多個值

def find(a): 
    index=a 
    while index<len(z)-1: 
     if z[index]=="T": 
      for index in range (index+20,index+30): 
       if z[index]=="A" and z[index+1]=="G" and z[index+2]=="T": 
        a=index 
        print a 
     index=index+1 
+1

也許使用'yield'而不是'print' – TerryA

+0

@ user2842500:你可能想要閱讀的東西:http://www.python.org/dev/peps/pep-0008/ –

回答

1

最直接的方法是返回一個tuplelist

def find(a): 
    index=a 
    ret = [] 
    while index<len(z)-1: 
     if z[index]=="T": 
      for index in range (index+20,index+30): 
       if z[index]=="A" and z[index+1]=="G" and z[index+2]=="T": 
        a=index 
        ret.append(a) 
     index=index+1 
    return ret 

您還可以使用yield。我正在刪除它的代碼(您可以閱讀鏈接,它非常好),因爲我認爲在您的情況下,返回listyield更有意義。 yield更有意義,如果您不打算始終使用所有返回的值或返回值太多而無法保存在內存中。

+0

非常感謝你,它的工作完美! – user2842500

相關問題