在每个新的lin将一个列表放入一个列表中

2024-06-28 19:44:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为每组kmer创建一个新列表(在列表中)

例如它应该返回:

[['ATT', 'TTT', 'TTG', 'TGG', 'GGC'], ['TGC', 'GCC', 'CCT', 'CTT', 'TTA'], ['CGG', 'GGT', 'GTA', 'TAT', 'ATC'], ['GAA', 'AAA', 'AAA', 'AAT', 'ATT']]

而不是这样:

['ATT', 'TTT', 'TTG', 'TGG', 'GGC', 'TGC', 'GCC', 'CCT', 'CTT', 'TTA', 'CGG', 'GGT', 'GTA', 'TAT', 'ATC', 'GAA', 'AAA', 'AAA', 'AAT', 'ATT']

我的代码

  # data = ['ATTTGGC', 'TGCCTTA', 'CGGTATC', 'GAAAATT']
    kmers = []
    def findKmersSet(k, stuff):
        i=0
        for line in data:
            for i in range(0,int(len(line)-k+1)):
                kmers.append(line[i:i+k])
    findKmersSet(3, data)

Tags: 列表datalineattgccttacctctt
2条回答

然后为每行创建一个列表:

kmers = []
def findKmersSet(k, stuff):
    for line in data:
        line_list = []
        for i in range(0,int(len(line)-k+1)):
            line_list.append(line[i:i+k])
        kmers.append(line_list)

findKmersSet(3, data)

这应该可以做到-关键是为每个初始字符串创建一个新列表,并将其附加到“总结果”列表中:

data = ['ATTTGGC', 'TGCCTTA', 'CGGTATC', 'GAAAATT']

def findKmersSet(k, stuff):
    result = []
    for inner_list in stuff:
        iterators = [iter(inner_list[i:]) for i in xrange(k)]
        result.append([''.join(triple) for triple in zip(*iterators)])

    return result


findKmersSet(3, data)
# [['ATT', 'TTT', 'TTG', 'TGG', 'GGC'], ['TGC', 'GCC', 'CCT', 'CTT', TTA'], ['CGG', 'GGT', 'GTA', 'TAT', 'ATC'], ['GAA', 'AAA', 'AAA', 'AAT', 'ATT']]

相关问题 更多 >