Je rencontre souvent un problème où j'essaye de faire une liste de listes d'une certaine longueur d'une chaîne.Compréhension de liste d'imbrication
Voici un exemple où j'ai une chaîne, mais je voudrais faire une liste de listes de longueur 3:
x = '123456789'
target_length = 3
new = [i for i in x]
final = [new[i:i+target_length] for i in range(0, len(x), target_length)]
print(final)
Sortie:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
Alors, cela fonctionne, mais se sent si maladroit.
Existe-t-il un meilleur moyen de combiner ces arguments en une ligne ou pensez-vous que cela rendrait le code illisible?
Cela suppose que la longueur de la La liste est 'target_length ** 2', ce qui est dans cet exemple, mais seulement par coïncidence. –
True. La réponse d'AK47 est la meilleure – triphook
Vous pouvez corriger ou au moins l'améliorer en utilisant 'range (len (x) // target_length)' dans la boucle externe, alors cela fonctionne au moins pour les longueurs de 'x' qui sont un multiple de la longueur cible. –