0

この関数は、文字列 z のインデックスである複数の値を出力しますが、それらの値を保存したいので、return を使用すると関数が終了し、いくつかの最初の値のみが残ります。

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
4

1 に答える 1

1

最も簡単な方法は、tupleorを返すことlistです:

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。私はそれのコードを削除しています(リンクを読むことができます、それは素晴らしいです) .listあなたのケースではyield. yield返されるすべての値を常に使用するつもりがない場合、または戻り値が多すぎてメモリに保持できない場合は、より理にかなっています。

于 2013-10-03T12:05:45.670 に答える