我正在建立线性连接,并且有两个列表:
a = [1,1,1,2,2,3,3,3,4]
b = [1,3,7,2,3,4,7,8,9]
a[i]
与b[i]
我将b
重组为c
:
c = [[1, 3], [7], [2, 3], [4], [7, 8], [9]]
我试图在a
的每个子列表中添加c
的对应值,以获得:
d = [[1, 1, 3], [1, 7], [2 ,2, 3], [3, 4], [3, 7, 8], [4, 9]]
c
的每个子列表中最初位于b
的第一个值与a
相关,例如c[0][0] = b[0]
,并将a[0]
添加到{{1} },c[0]
,因此将c[1][0] = b[2]
添加到a[2]
。
如果c[1]
中的子列表且子列表的第一个值= c
,请向每个子列表中添加b[i]
。
我为此卡住了。
答案 0 :(得分:2)
您可以从a
构建一个迭代器,并使用itertools.islice
对其进行连续切片,以便根据c
中子列表的长度来使用它,但是只能选择第一个每个切片中的项目:
from itertools import islice
a = [1,1,1,2,2,3,3,3,4]
c = [[1, 3], [7], [2, 3], [4], [7, 8], [9]]
a_ = iter(a)
[[list(islice(a_, len(j)))[0]] + [i for i in j] for j in c]
输出
[[1, 1, 3], [1, 7], [2, 2, 3], [3, 4], [3, 7, 8], [4, 9]]
答案 1 :(得分:1)
另一种方法。基本方式。
#!/bin/python
a = [1,1,1,2,2,3,3,3,4]
b = [1,3,7,2,3,4,7,8,9]
c = [[1, 3], [7], [2, 3], [4], [7, 8], [9]]
#d = [[1, 1, 3], [1, 7], [2 ,2, 3], [3, 4], [3, 7, 8], [4, 9]]
element_count=0
d=[]
for x in c:
print (a[element_count])
print(x)
d.append([a[element_count]]+x)
element_count+=len(x)