我正在尝试创建一个包含序列的列表,以便调用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'],...]]
所以我无法创建这个嵌套的二对一元组序列。
答案 0 :(得分: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']]]]
我希望这是一个解决你问题的想法。有关详细信息,您可以查找“嵌套列表理解”。