简体   繁体   English

将列表放入每个新行的列表中

[英]Putting a list into a list at each new line

I am trying to create a new list (within a list) for each set of kmers 我正在尝试为每组kmers创建一个新列表(在列表内)

For example it should return: 例如,它应该返回:

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

Instead of this: 代替这个:

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

My code 我的密码

  # 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)

Then do create a list for each line: 然后为每行创建一个列表:

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)

This should do the trick - the point is to create a new list for each initial string and append it to the total results list: 这应该可以解决问题-关键是为每个初始字符串创建一个新列表,并将其附加到总结果列表中:

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']]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM