如何在嵌套列表中添加与另一个列表相对应的值?

时间:2019-03-27 09:42:59

标签: python list iteration

我正在建立线性连接,并且有两个列表:

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]

我为此卡住了。

2 个答案:

答案 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)