2016-11-08 69 views
1

我想創建一個包含序列的列表以調用PrefixSpan算法。我需要這種形式的列表:創建前綴跨度問題的序列

[ [["a", "b"], ["c"]], [["b", "c"], ["d"]], [["c", "d"], ["e"]]] 

其中嵌套列表的第一個兩個字母是規則/序列和單個字母是結果。

我有這種形式的數據:

[[u'a', 
    u'b', 
    u'c', 
    u'd', 
    u'e', 
    u'f', 
], 
[u'a', 
    u'b',...]] 

應用到這個數據以下邏輯:

a1 =[] 
    for i in range(len(list2)): 
     a2 = list2[i] 
     for j in range(len(a2)-2): 
     a1.append([a2[j],a2[j+1]]) 
     a1.append([a2[j+2]]) 

的,這個結果具有以下形式:

[[[u'a', u'b'], 
      [u'c'], 
      [u'd', u'e'], 
      [u'f'], 
      [u'g', u'h'],...]] 

所以我不能創建這個嵌套的兩對一的元組序列。

回答

1

我會做這個與列表理解。我創建了下面的代碼:

a = [[u'a',u'b',u'c',u'd',u'e',u'f'],[u'a2',u'b2',u'c2',u'd2',u'e2',u'f2']] 
print([[[v,x[i+1],[x[i+2]]] for i,v in enumerate(x) if i<len(x)-2] for x in a]) 

輸出是:

[[[u'a', u'b', [u'c']], [u'b', u'c', [u'd']], [u'c', u'd', [u'e']], [u'd', u'e', [u'f']]], [[u'a2', u'b2', [u'c2']], [u'b2', u'c2', [u'd2']], [u'c2', u'd2', [u'e2']], [u'd2', u'e2', [u'f2']]]] 

我希望這是解決你問題的想法。有關更多信息,您可以查看「嵌套列表理解」。