Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

206
Vistas
Lista de división de Python en sublistas en palabras clave de inicio/final dadas

Si tuviera una lista, digamos

 lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk']

Me gustaría dividirlo en una sublista con 'foo' y 'bar' como palabras clave de inicio y final, para obtener

 lst = ['hello', ['foo', 'test', 'world', 'bar'], 'idk']

La forma en que estoy haciendo esto actualmente es la siguiente.

 def findLoop(t): inds = [index for index, item in enumerate(t) if item in ["FOO", "BAR"]] centre = inds[(len(inds)/2)-1:(len(inds)/2)+1] newCentre = t[centre[0]:centre[1]+1] return t[:centre[0]] + [newCentre] + t[centre[1]+1:] def getLoops(t): inds = len([index for index, item in enumerate(t) if item in ["FOO", "BAR"]]) for i in range(inds): t = findLoop(t) return t

Esto parece un poco complicado, pero funciona muy bien para las palabras clave de inicio/fin anidadas, por lo que las sublistas se pueden formar dentro de las sublistas, pero no funciona para varias palabras clave de inicio/fin que no están una dentro de la otra. Estar anidado aún no es importante, por lo que agradecería cualquier ayuda.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Una forma de usar el corte:

 >>> lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk'] >>> a=lst.index('foo') # locate start word >>> b=lst.index('bar')+1 # locate end word >>> lst[a:b] = [lst[a:b]] # replace list slice with a list of the slice >>> lst ['hello', ['foo', 'test', 'world', 'bar'], 'idk']
over 4 years ago · Santiago Trujillo Denunciar

0

inicio múltiple, extremos (basado en la respuesta de Mark Tolonen)

 lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk','am'] t = [('foo','test'),('world','idk')] def sublists(lst, t): for start,end in t: a=lst.index(start) b=lst.index(end)+1 lst[a:b] = [lst[a:b]] return lst print(sublists(lst,t))

Devoluciones:

 ['hello', ['foo', 'test'], ['world', 'bar', 'idk'], 'am']
over 4 years ago · Santiago Trujillo Denunciar

0

Usando el corte, sin soporte para listas anidadas:

 >>> lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk'] >>> start_idx = lst.index('foo') >>> end_idx = lst.index('bar') >>> lst[:start_idx] + [lst[start_idx:end_idx+1]] + lst[end_idx+1:] ['hello', ['foo', 'test', 'world', 'bar'], 'idk']
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda