Как можно преобразовать неравномерный массив с кортежами в одномерный (Python)
Нужно преобразовать подобное:
[((['1', '2', '3'], ['1', '3']), (['2', '3'], ['3'])), ((['1', '2', '3'], ['1', '2']), (['2', '3'], ['2'])), (['1', '2', '3'], ['1', '3']), ['1', '2', '3']]
Во что-то наподобие этого:
['1', '2', '3', '1', '3', '2', '3', '3', '1', '2', '3', '1', '2', '2', '3', '2', '1', '2', '3','1', '3', '1', '2', '3']
Массив задаётся пользователем
Ответы (2 шт):
Автор решения: Голаков
→ Ссылка
Вопрос решён самостоятельно. Прикрепляю код:
x=[[1,2,[3]],[4,5,6],[[7,8,[9]]], [10,[11],12],[[13]]] #пример массива
j=[] #другой массив для заполнения
def ras(i):
for u in i:
if type(u) is not list:
j.append(u)
else:
j.append(ras(u))
return [n for n in j if type(n) is not list] #избавляемся от бесконечных внутренних массивов
print(ras(x))
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]```
Автор решения: Gawain
→ Ссылка
def foo(old_list):
new_list = []
for x in old_list:
if isinstance(x, (list, tuple)):
new_list.extend(foo(x))
else:
new_list.append(x)
return new_list
t = [((['1', '2', '3'], ['1', '3']), (['2', '3'], ['3'])), ((['1', '2', '3'], ['1', '2']), (['2', '3'], ['2'])), (['1', '2', '3'], ['1', '3']), ['1', '2', '3']]
print(foo(t))