Манипуляции с со списками в списках

Надо список a превратить в список b

a = [['Сухие смеси', 'Штукатурки,профили и маяки,Сетки,Смеси для пола,Клеи для плитки камня изоляции,Монтажные и кладочные смеси,Добавки для строительных расстворов,Пескобетон'], ['Листовые материалы', 'Гипсокартон,Гипсоволкнистые листы,Профиль для ГК и комплектующие']]

b = [[['Сухие смеси'], ['Штукатурки', 'профили и маяки', 'Сетки', 'Смеси для пола', 'Клеи для плитки камня и изоляции', 'Монтажные и кладочные смеси', 'Добавки для строительных растворов', 'Пескобетон']], [['Листовые материалы'], ['Гипсокартон', 'Гипсоволкнистые листы', 'Профиль для ГК и комплектующие']]]

Отсплитовать получалось, но вот засунуть все именно так как запланировал не выходит.


Ответы (4 шт):

Автор решения: Freerade

c = []
for i in a:
    pervaia_chast = []
    obshiy_list = []
    pervaia_chast.append(i[0])

    obshiy_list.append(pervaia_chast)

    obshiy_list.append(i[1].split(','))

    c.append(obshiy_list)
→ Ссылка
Автор решения: CrazyElf
a = [['Сухие смеси', 'Штукатурки,профили и маяки,Сетки,Смеси для пола,Клеи для плитки камня изоляции,Монтажные и кладочные смеси,Добавки для строительных расстворов,Пескобетон'], ['Листовые материалы', 'Гипсокартон,Гипсоволкнистые листы,Профиль для ГК и комплектующие']]
b = [[[x[0]],x[1].split(',')] for x in a]
print(b)

Вывод:

[[['Сухие смеси'], ['Штукатурки', 'профили и маяки', 'Сетки', 'Смеси для пола', 'Клеи для плитки камня изоляции', 'Монтажные и кладочные смеси', 'Добавки для строительных расстворов', 'Пескобетон']], [['Листовые материалы'], ['Гипсокартон', 'Гипсоволкнистые листы', 'Профиль для ГК и комплектующие']]]
→ Ссылка
Автор решения: Zhihar

например, так:

a = [['Сухие смеси', 'Штукатурки,профили и маяки,Сетки,Смеси для пола,Клеи для плитки камня изоляции,Монтажные и кладочные смеси,Добавки для строительных расстворов,Пескобетон'], ['Листовые материалы', 'Гипсокартон,Гипсоволкнистые листы,Профиль для ГК и комплектующие']]

b = [[elem.split(',') for elem in obj] for obj in a]

можно через map, но это подлиннее:

b = [*map(lambda obj: [elem.split(',') for elem in obj], a)]

или

b = [*map(lambda obj: [*map(lambda elem: elem.split(','), obj)], a)]
→ Ссылка
Автор решения: SergFSM

мне кажется в таком случае удобнее табличное представление, я бы сделал как-то так:

import pandas as pd

a = [['Сухие смеси', 'Штукатурки,профили и маяки,Сетки,Смеси для пола,Клеи для плитки камня изоляции,Монтажные и кладочные смеси,Добавки для строительных расстворов,Пескобетон'], 
     ['Листовые материалы', 'Гипсокартон,Гипсоволкнистые листы,Профиль для ГК и комплектующие']]
b = pd.DataFrame(a).apply(lambda x: pd.Series({'категория': x[0], 'наименование': x[1].split(',')}),axis=1).explode('наименование').reset_index(drop=True)

вывод:

             категория                         наименование
0          Сухие смеси                           Штукатурки
1          Сухие смеси                      профили и маяки
2          Сухие смеси                                Сетки
3          Сухие смеси                       Смеси для пола
4          Сухие смеси       Клеи для плитки камня изоляции
5          Сухие смеси          Монтажные и кладочные смеси
6          Сухие смеси  Добавки для строительных расстворов
7          Сухие смеси                           Пескобетон
8   Листовые материалы                          Гипсокартон
9   Листовые материалы                Гипсоволкнистые листы
10  Листовые материалы       Профиль для ГК и комплектующие
→ Ссылка