Как добавить в вложенный список значение, соответствующее другому списку? - PullRequest
2 голосов
/ 27 марта 2019

Я устанавливаю линейное соединение, и у меня есть два списка:

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] к c[0], c[1][0] = b[2], поэтому добавьте a[2] к c[1].

Если подсписок в c и первое значение подсписка = b[i], добавьте a[i] к каждому подсписку.

Я застрял на этом.

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Вы можете построить итератор из 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 голос
/ 27 марта 2019

Другой метод. Основной способ.

#!/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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...