Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将循环中创建的每个序列与上一个序列进行比较_Python - Fatal编程技术网

Python 将循环中创建的每个序列与上一个序列进行比较

Python 将循环中创建的每个序列与上一个序列进行比较,python,Python,我在python中创建了一个函数,随机生成核苷酸序列: import random selection60 = {"A":20, "T":20, "G":30, "C":30} sseq60=[] for k in selection60: sseq60 = sseq60 + [k] * int(selection60[k]) random.shuffle(sseq60) for i in range

我在python中创建了一个函数,随机生成核苷酸序列:

import random
selection60 = {"A":20, "T":20, "G":30, "C":30}
sseq60=[]
for k in selection60:
    sseq60 = sseq60 + [k] * int(selection60[k])
    random.shuffle(sseq60)
for i in range(100):
            random.shuffle(sseq60)
def generateSequence(self, length):
    length = int(length)
    sequence = ""
    while len(sequence) < length:
        sequence="".join(random.sample(self, length))
    return sequence[:length]
随机导入
选择60={A:20,T:20,G:30,C:30}
sseq60=[]
对于selection60中的k:
sseq60=sseq60+[k]*int(选择60[k])
随机洗牌(sseq60)
对于范围(100)内的i:
随机洗牌(sseq60)
def生成序列(自身、长度):
长度=整数(长度)
sequence=“”
而len(序列)<长度:
sequence=“.join(随机样本(自身,长度))
返回序列[:长度]
现在,我想检查一下,当我应用此函数时,如果新创建的序列与以前的序列的相似性大于10%,则删除该序列并创建一个新序列: 我写了这样的东西:

    lst60=[]
    newSeq=[]
    for i in range(5):
        while max_identity < 10:
            newSeq=generateSequence(sseq60,100)
            identity[i] = [newSeq[i] == newSeq[i] for i in range(len(newSeq[i]))]
max_identity[I]=100*sum(identity[i]/length(identity[i])
                lst60.append(newSeq)
                print(len(lst60))
lst60=[]
newSeq=[]
对于范围(5)中的i:
当最大值小于10时:
newSeq=生成序列(SSEQ60100)
标识[i]=[newSeq[i]==newSeq[i]表示范围内的i(len(newSeq[i]))
最大单位[I]=100*和(单位[I]/长度(单位[I])
lst60.追加(newSeq)
打印(len(lst60))

然而,似乎我得到了一个空列表

如果你想比较所有1的
I
th序列和
j
th序列,你必须使用嵌套的for循环。记住,当你创建一个新列表时,
lst60[-1]
总是包含最后一个元素。注意,你的第6行有一个条件
newSeq[I]==newSeq[I]
,这将永远是真的。两条注释。1.什么是
标识
?它是一个列表、字符串还是一个整数?它最初大于10吗?2.
newSeq[i]==newSeq[i]
这将永远是真的。@TimRoberts是的,我注意到了,这就是为什么我使用append(),是的,我认为newSeq[i]==newSeq[i]不是正确的写入方式,我如何写入新创建的序列与循环中的前一个序列进行比较?@DeepakGouda identity是在将每个序列与循环中的前一个序列进行比较时应生成的最大值。基本上,循环中5个序列是使用该函数创建的,我希望对序列2进行比较d到序列1和序列3,与序列1和2进行比较,依此类推到序列5,与1,2,3,4PS进行比较:函数
getSimilarity
的工作原理是假设两个序列的长度相同。是的,这也是我的想法,要有一个新的函数来进行比较,谢谢e getSimilarity(newSeq[I],newSeq[j])?同样,这个循环似乎让我们感到很奇怪。