我试图同时存储和更新多个列表。我在此列出字符串中的位置,即<list-1>
将存储第一个位置,<list_0>
将存储中间位置,<list+1>
将最后位置存储在三个字母的单词中。由于我使用滚动窗口,意味着每个列表将存储序列中多个单词的字母,因此很难对所有内容进行硬编码,特别是如果窗口长度需要变量。
基本上,我想要的是这样的<for list0...listn>:<store/append character to list0 in string[0].....store/append character to listn in string s[n]>
这是我的代码:
#http://stackoverflow.com/questions/6822725/rolling-or-sliding-window-iterator-in-python
def window(iterable, size):
iters = tee(iterable, size)
for i in range(1, size):
for each in iters[i:]:
next(each, None)
return zip(*iters)
if(wordlength == 3):
for each in window(temporary_string, wordlength):
temp = ''.join(each)
k = temp[0]
k = damino[k]
p_1.append(k)
t = temp[0]
p_1w.append(t)
k = temp[1]
k = damino[k]
p.append(k)
t = temp[1]
pw.append(t)
k = temp[2]
k = damino[k]
p1.append(k)
t = temp[2]
p1w.append(t)
word_list.append(temp)
例如,输入字符串将为:ATGGAAE
窗口大小:3
输出将是三个数组,
p-1|p|p+1
*|A|T
A|T|G
T|G|G
G|G|A
G|A|A
A|A|E
A|E|*
答案 0 :(得分:0)
嗯,我做到了。我没有手动编写和更新每个索引,而是创建了一个数据框来为我分割单词,然后存储它。对于三个字母的单词,它看起来像:
df = pd.DataFrame({'p-1':dftemp['word_list'].str[0],'p':dftemp['word_list'].str[1],'p+1':dftemp['word_list'].str[2]})
虽然不是最好的解决方案,但它可以完美运行。