我正在尝试为每组kmers创建一个新列表(在列表中)
例如它应该返回:
[['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)
答案 0 :(得分:1)
然后为每一行创建一个列表:
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)
答案 1 :(得分:1)
这应该可以解决问题 - 重点是为每个初始字符串创建一个新列表并将其附加到总结果列表中:
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']]