Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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_Sequence - Fatal编程技术网

Python列表切片序列遗传代码

Python列表切片序列遗传代码,python,sequence,Python,Sequence,我有一个列表,我想从字典中提取每个元素的值,然后返回 获取从AUG开始到'*'结束的新列表,或获取字典中不存在的元素 例如: CodD = {"UUU":"F", "UUC":"F", "UUA":"L", "UUG":"L", "UCU":"S", "UCC":"s", "UCA":"S", "UCG":"S", "UAU":"Y", "UAC":"Y", "UAA":"*", "UAG":"*", "UGU":"C", "UGC":"C", "UGA":"*", "UGG":"W",

我有一个列表,我想从字典中提取每个元素的值,然后返回 获取从
AUG
开始到
'*'
结束的新列表,或获取字典中不存在的元素

例如:

CodD = {"UUU":"F", "UUC":"F", "UUA":"L", "UUG":"L",
 "UCU":"S", "UCC":"s", "UCA":"S", "UCG":"S",
 "UAU":"Y", "UAC":"Y", "UAA":"*", "UAG":"*",
 "UGU":"C", "UGC":"C", "UGA":"*", "UGG":"W",
 "CUU":"L", "CUC":"L", "CUA":"L", "CUG":"L",
 "CCU":"P", "CCC":"P", "CCA":"P", "CCG":"P",
 "CAU":"H", "CAC":"H", "CAA":"Q", "CAG":"Q",
 "CGU":"R", "CGC":"R", "CGA":"R", "CGG":"R",
 "AUU":"I", "AUC":"I", "AUA":"I", "AUG":"M",
 "ACU":"T", "ACC":"T", "ACA":"T", "ACG":"T",
 "AAU":"N", "AAC":"N", "AAA":"K", "AAG":"K",
 "AGU":"S", "AGC":"S", "AGA":"R", "AGG":"R",
 "GUU":"V", "GUC":"V", "GUA":"V", "GUG":"V",
 "GCU":"A", "GCC":"A", "GCA":"A", "GCG":"A",
 "GAU":"D", "GAC":"D", "GAA":"E", "GAG":"E",
 "GGU":"G", "GGC":"G", "GGA":"G", "GGG":"G",}
带输入列表:

['UAU', 'AUG', 'AAA', 'UAG', 'CAA', 'GUU', 'UUA', 'UUU', 'AAA', 'UAA', 'GGG',
 'UUU', 'AAA', 'UAC', 'AUU', 'ACA', 'CAU', 'AAC', 'AUU', 'UAG', 'ACU', 'UAG',
 'GGG', 'AUG', 'AAA', 'AAA', 'ACC', 'AAA', 'AAC', 'CAG', 'UUU', 'GUU', 'ACU',
 'UAA', 'CAU', 'GGC', 'AUU', 'GGG', 'CAG']
结果将是

['M','K']
['M','K','K','T','K','Q']
它们由以下部分组成:

  • 找到列表中的第一个
    'AUG'
    元素,这将启动一个输出序列
  • CodD[element]
    的每个结果添加到输出序列中
  • 如果
    CodD[element]
    不存在,或者是
    “*”
    ,则输出序列结束
  • 回到1。直到输入列表用尽

  • 在这样一个序列中,一旦启动,是否再次找到
    'AUG'
    并不重要。

    您可以使用生成器:

    def sequences(mapping, lst):
        result = None
        for elem in lst:
            if elem == 'AUG' and result is None:
                # start a new list
                result = []
            if result is None:
                # not currently creating an input sequence, ignore this element
                continue
            value = mapping.get(elem)
            if value is None or value == '*':
                # sequence end
                yield result
                result = None
                continue
            result.append(value)
    
    演示:


    你能详细说明一下吗?我不太明白列表输入如何产生两个列表输出。我的理解是:1)查找
    AUG
    元素。2) 将每个元素映射到
    CodD
    字典中的值,将该值添加到输出列表中。3) 如果字典中没有这样的键,或者值是
    “*”
    ,请结束该输出列表。这是否正确?如果序列中有两个
    AUG
    元素,会发生什么情况?假设列表中包含“
    ”AUG“,”其他“,”AUG“
    ?应该启动新序列还是继续当前序列?程序应该查找AUG以开始从字典中提取值并将其存储在新列表中,当找到值“*”(键:UAG、UGA、UAA)或字典中不存在或不存在的元素时,程序将停止获取它?是正确的。。。。如果第一个AUG是开始,那么是否有AUG follows并不重要映射应该放在shell中还是python文件中?以及序列(CodD,sample)中结果的“”。。。打印结果“我能把它也放在哪里?@MunaAr:我展示了该函数在我的shell中按预期工作。你不必逐字重复演示,但如果你想使用我生成的函数,你会希望以类似的方式使用它。这就是我所做的,它显示了错误回溯(最近一次调用):File”“,第1行,在for result in sequences(CodD,lstTriple):name错误:名称'CodD'未定义>>>@MunaAr:您仍然需要定义自己的字典!我使用了您在问题中使用的名称。@MunaAr:您也可以将字典放在python模块中,而不必将它们放在python shell中。
    只是一个shell,显示它可以为正在构建的语句接受更多行。你不必亲自输入这些。
    >>> # I named your list 'sample' here
    ...
    >>> for result in sequences(CodD, sample):
    ...     print result
    ...
    ['M', 'K']
    ['M', 'K', 'K', 'T', 'K', 'N', 'Q', 'F', 'V', 'T']