6 votes

analyse une chaîne d'ensembles d'entiers avec des intervalles à lister

J'ai "2,5,7-9,12" chaîne.

Je veux en tirer la liste [2, 5, 7, 8, 9, 12].

Existe-t-il une fonction intégrée pour cela en Python ?

Gracias.

UPD. Je suppose que la réponse directe est Non . En tout cas, merci pour vos "snippets". J'en utilise un, suggéré par Sven Marnach .

1voto

NPE Points 169956

Je n'ai pas connaissance d'une fonction intégrée qui permettrait de faire cela. Ce qui suit n'est pas particulièrement élégant, mais fait l'affaire :

s = "2,5,7-9,12"
ret = []
for tok in s.split(","):
  val = map(int, tok.split("-"))
  if len(val) == 1:
    ret += val
  else:
    ret += range(val[0], val[1] + 1)
print ret

La gestion des nombres négatifs est l'un des domaines dans lesquels cette solution pourrait être améliorée (votre question n'indique pas clairement si des nombres négatifs peuvent apparaître dans l'entrée).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X