Je suis juste curieux de savoir s'il existe un moyen de diviser la liste des nombres en utilisant sa propre plage? Exemple:
splited_list = [[0,1],[1,2],[2,3],[5,6],[6,7]]
à
original_list = [[0,3],[5,7]]
3 Réponses :
Essayez ceci:
original_list = [[0,3],[5,7]] splitted_list = [] for rangeDef in original_list: ## for each range definition for i in range(rangeDef[0], rangeDef[1]): ## for each pair of numbers within that range splittedList.append([i, i + 1])
Approche simple et courte (avec range code >
):
[[0, 1], [1, 2], [2, 3], [5, 6], [6, 7]]
La sortie:
orig_list = [[0,3],[5,7]] res = [[i, i+1] for a, b in orig_list for i in range(a, b)] print(res)
Vous pouvez également décompresser les limites de la plage comme ceci: [[i, i + 1] pour a, b dans orig_list pour i dans plage (a, b)]
. Ou rendez-le plus golfique avec [[i, i + 1] for r in orig_list for i in range (* r)]
@Norrius, oui, faisons-le
Vous pouvez également utiliser une compréhension de liste avec zip
:
[[0, 1], [1, 2], [2, 3], [5, 6], [6, 7]]
Output:
l = [[0,3],[5,7]] new_l = [[a, b] for c, d in l for a, b in zip(range(c, d+1), range(c, d+1)[1:])]