['lloc', [['.', 'orgstart']]]
, и мне нужно рекурсивно разложить его в одномерное состояние, например: ['lloc', '.', 'orgstart']
, также желательно сделать чистку точек: ['lloc', 'orgstart']
, но это уже не обязательно. def flatten(array: list):
def popen(arr: list | tuple):
if not arr or not arr[0]:
return arr
while type(arr[0]) in (tuple, list):
arr = arr[0]
pass
return arr
if len(array) in (0, 1):
return popen(array)
if type(array[0]) == str:
if type(array[1]) == list:
return [array[0], *flatten(array[1:])]
pass
return array
raise RuntimeError
from collections import abc
def flatten(iterable):
for item in iterable:
if isinstance(item, (str, bytes)):
yield item
elif isinstance(item, abc.Sequence):
yield from flatten(item)
else:
yield item
data = ['lloc', [['.', 'orgstart']]]
flat_data = list(flatten(data))
clear_data = list(i for i in flatten(data) if i != '.')