J'ai une liste imbriquée que je dois enchaîner, puis exécuter des métriques, puis "désenchaîner" dans son format imbriqué d'origine. Voici un exemple de données pour illustrer mon propos :
from itertools import chain
nested_list = [['x', 'xx', 'xxx'], ['yy', 'yyy', 'y', 'yyyy'], ['zz', 'z']]
chained_list = list(chain(*nested_list))
print("chained_list: \n", chained_list)
metrics_list = [str(chained_list[x]) +'_score' \
for x in range(len(chained_list))]
print("metrics_list: \n", metrics_list)
zipped_scores = list(zip(chained_list, metrics_list))
print("zipped_scores: \n", zipped_scores)
unchain_function = '????'
chained_list:
['x', 'xx', 'xxx', 'yy', 'yyy', 'y', 'yyyy', 'zz', 'z']
metrics_list:
['x_score', 'xx_score', 'xxx_score', 'yy_score', 'yyy_score', 'y_score', 'yyyy_score', 'zz_score', 'z_score']
zipped_scores:
[('x', 'x_score'), ('xx', 'xx_score'), ('xxx', 'xxx_score'), ('yy', 'yy_score'), ('yyy', 'yyy_score'), ('y', 'y_score'), ('yyyy', 'yyyy_score'), ('zz', 'zz_score'), ('z', 'z_score')]
Existe-t-il une fonction python ou un moyen pythonique d'écrire une "unchain_function" pour obtenir ce résultat souhaité ?
[
[
('x', 'x_score'),
('xx', 'xx_score'),
('xxx', 'xxx_score')
],
[
('yy', 'yy_score'),
('yyy', 'yyy_score'),
('y', 'y_score'),
('yyyy', 'yyyy_score')
],
[
('zz', 'zz_score'),
('z', 'z_score')
]
]
(background : ceci est pour exécuter des métriques sur des listes ayant une longueur supérieure à 100 000)