Манипуляции с со списками в списках
Надо список 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 Листовые материалы Профиль для ГК и комплектующие