2017-02-28 22 views
-2

我试图在同一时间存储和更新多个列表。我在这里列出了一个字符串中的一个位置,即<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]> 这里是我的代码:Python - 将值存储在单个字符串的多个列表中

#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

那么你的代码有什么问题? – Goyo

+0

我认为'if'部分应该在函数定义之外? – Goyo

+0

我的代码没有什么特别的错,只是我需要让它更有效率。 – Siddharth

回答

0

嗯,我做到了。我没有单独手动编写和更新每个索引,而是创建了一个数据框来为我分割单词,然后将其存储起来。对于三个字母的单词,它看起来像:

df = pd.DataFrame({'p-1':dftemp['word_list'].str[0],'p':dftemp['word_list'].str[1],'p+1':dftemp['word_list'].str[2]}) 

虽然不是最好的解决方案,但它的工作原理完美无瑕。

相关问题