Python – Cómo extraer los últimos x elementos de una lista

Si la longitud de una lista de python es mayor que un valor dado (por ejemplo, 10), entonces quiero extraer los últimos 10 elementos de esa lista en una nueva lista. ¿Cómo puedo hacer esto? Intenté obtener la diferencia entre len (my_list) – 10 y lo uso como: new_list = [(len (my_list) – 10):] que no funciona

¿Alguna sugerencia? Gracias por adelantado

es tan simple como:

my_list[-10:] 

Esto muestra cómo cortar una lista larga en un tamaño máximo y poner el rest en una nueva lista. No es exactamente lo que estás preguntando, pero puede ser lo que realmente quieres:

 >>> list1 = [10, 20, 30, 40, 50, 60, 70] >>> max_size = 5 >>> list2 = list1[max_size:] >>> list2 [60, 70] >>> list1 = list1[:max_size] >>> list1 [10, 20, 30, 40, 50] 

Esto es más parecido a lo que estás preguntando, básicamente lo mismo, pero tomando la nueva lista del final:

 >>> list1 = [10, 20, 30, 40, 50, 60, 70] >>> list2 = list1[:max_size] >>> list2 [10, 20, 30, 40, 50] >>> list2 = list1[-max_size:] >>> list2 [30, 40, 50, 60, 70] >>> list1 = list1[:-max_size] >>> list1 [10, 20] >>> 

El tutorial de Python tiene una sección sobre cómo usar la división de listas: http://docs.python.org/tutorial/introduction.html#lists

En tu caso, es tan simple como escribir:

  new_list = my_list[-10:] 

En realidad, el subíndice en la statement de su pregunta funciona perfectamente: ¿podría pegar exactamente qué error o resultado inesperado está viendo cuando intenta usarlo usted mismo? Aquí hay una ejecución exitosa del subíndice que sugiere:

 >>> my_list = list('abcdefghijklmnop') >>> new_list = my_list[(len(my_list) - 10):] >>> new_list ['g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'] 

¿El problema es simplemente que olvidó nombrar my_list delante de su notación de sector?

Edición: como señala Felix, debes evitar que el índice se vuelva negativo:

 my_list[max(0, len(my_list) - 10):] 

Y, por supuesto, como señalan las otras respuestas, un índice negativo constante es en realidad la forma más fácil de lograr su objective; pero quería centrarme primero en por qué su “manera” de obtener los últimos diez elementos, lo que tenía sentido, incluso si no aprovechaba al máximo las convenciones de Python con respecto a los cortes, le estaba dando un error.