как разделить список с длиной вложенного списка python? - PullRequest
1 голос
/ 16 марта 2020

У меня есть такой вложенный список:

 a = [[0.00069053395], [0.7278625], [0.8591849, 0.86290157, 0.8703022], [0.9041279, 0.9102304, 0.91197634], [0.93096334, 0.93327045], [0.9456768, 0.95339334], [0.98164046, 0.9836741]]

и другой список, как показано ниже:

b = ['/home/shape/13.jpg', '/home/shape/5.jpg', '/home/shape/6.jpg', '/home/shape/0.jpg', '/home/shape/2.jpg', '/home/shape/1.jpg', '/home/shape/7.jpg', '/home/shape/11.jpg', '/home/cuts/shape/10.jpg', '/home/shape/4.jpg', '/home/shape/14.jpg', '/home/shape/12.jpg', '/home/shape/16.jpg', '/home/shape/8.jpg']

Я хочу сделать список b похожим на вложенный список a, с длиной его элементов.

Ожидаемый результат:

c = [['/home/shape/13.jpg'],['/home/shape/5.jpg'],['/home/shape/6.jpg', '/home/shape/0.jpg', '/home/shape/2.jpg'],['/home/shape/1.jpg', '/home/shape/7.jpg', '/home/shape/11.jpg'],['/home/cuts/shape/10.jpg', '/home/shape/4.jpg'],['/home/shape/14.jpg', '/home/shape/12.jpg'],['/home/shape/16.jpg', '/home/shape/8.jpg']]

Любые предложения будут полезны!

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

вы можете использовать встроенную функцию iter со списком:

it = iter(b)

[[next(it) for _ in l] for l in a]

вывод:

[['/home/shape/13.jpg'],
 ['/home/shape/5.jpg'],
 ['/home/shape/6.jpg', '/home/shape/0.jpg', '/home/shape/2.jpg'],
 ['/home/shape/1.jpg', '/home/shape/7.jpg', '/home/shape/11.jpg'],
 ['/home/cuts/shape/10.jpg', '/home/shape/4.jpg'],
 ['/home/shape/14.jpg', '/home/shape/12.jpg'],
 ['/home/shape/16.jpg', '/home/shape/8.jpg']]
0 голосов
/ 16 марта 2020

Вам нужно:

c = []
count = 0
for i in a:
     c.append(b[count:count+len(i)])
     count = count+len(i)

print(c)

Вывод:

[['/home/shape/13.jpg'], ['/home/shape/5.jpg'], ['/home/shape/6.jpg', 
 '/home/shape/0.jpg', '/home/shape/2.jpg'], ['/home/shape/1.jpg', 
 '/home/shape/7.jpg', '/home/shape/11.jpg'], ['/home/cuts/shape/10.jpg', 
 '/home/shape/4.jpg'], ['/home/shape/14.jpg', '/home/shape/12.jpg'], 
 ['/home/shape/16.jpg', '/home/shape/8.jpg']]
...