Si tengo una lista y quiero truncarla para que no tenga más de 100 elementos, ¿cómo hago esto?¿Cómo trunco una lista?
Respuesta
Para modificar la lista en su lugar (en lugar de hacer una copia más corta de la lista), utilice:
del l[100:]
+1 Totally forgot 'del' funciona con rebanadas. – delnan
rebanar con [: 100] es generalmente una mejor solución ya que tiene un rendimiento constante, pero del a [100:] se vuelve más lento para una lista más grande. – kefeizhou
kefeizhou: Eso podría depender de lo que realmente deseas. Si realmente no necesita las entradas más allá de los primeros 100, debe eliminarlas.Decir que generalmente es una mejor idea mantenerlos por ahí porque esto toma menos tiempo que borrarlos me parece un razonamiento extraño. –
Puede utilizar la lista de rebanar:
a = a[0:100]
Y si absolutamente insiste en liberar el resto no utilizado: del a [100:] – Confusion
@Confusion: el resto obtiene basura recolectada automáticamente si 'a' fue la única referencia a la lista. –
Usted puede hacer algo como:
truncated = list[:100]
La otra items[:100]
mencionado le da una nueva lista que contiene los primeros 100 elementos de items
. Si desea modificar la lista en contexto, use use items[:] = items[:100]
(asignación de división) o while len(items) > 100: items.pop()
del items[100:]
según lo propuesto por Ned Batchelder.
Usted puede utilizar rebanar si no te importa simplemente crear una nueva copia de la lista que contiene solo los elementos que desea ... sin embargo, esto deja la lista original sin modificaciones.
>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> b = a[0:5]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b
[0, 1, 2, 3, 4]
Si realmente desea truncar la lista original, basta con borrar los elementos que no desee mediante el uso de rebanado con del
>>> del a[5:]
>>> a
[0, 1, 2, 3, 4]
La respuesta correcta es, por supuesto:
>>> x = range(10)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x = x[:5]
>>> x
[0, 1, 2, 3, 4]
Pero, lo que es más importante, si está interesado en los valores superiores a 100 y quiere sacarlos uno por uno por cualquier razón, también puede usar POP()
>>> x = range(10)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x.pop()
9
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8]
Incluso puede especificar qué elemento para sacar:
>>> x= range(10,20)
>>> x
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> x.pop(3)
13
>>> x.pop()
19
>>> x
[10, 11, 12, 14, 15, 16, 17, 18]
>>> x.pop(-1)
18
[10, 11, 12, 14, 15, 16, 17]
Esto elimina elementos individuales, acortando la lista, sin copiar.
Por lo tanto, una respuesta obtusa y asquerosa (pero también correcta) sería iterar hacia abajo. Yo sólo voy a bajar de 12 a 8 para facilitar la lectura aquí:
>>> x=range(12)
>>> for i in range(len(x), 8, -1):
... y = x.pop()
... print "popping x: ", y, ", x=", x
...
popping x: 11 , x= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
popping x: 10 , x= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
popping x: 9 , x= [0, 1, 2, 3, 4, 5, 6, 7, 8]
popping x: 8 , x= [0, 1, 2, 3, 4, 5, 6, 7]
Claro, no es óptimo, pero sólo se encontró con una situación en la que necesitaba esto, así que pensé en compartir aquí (Estoy truncando una lista cuando veo el primer valor que no es ninguno).
- 1. ¿Cómo trunco una lista en C#?
- 2. ¿Cómo trunco las tablas correctamente?
- 3. ¿Cómo trunco una cadena al convertir a bytes en C#?
- 4. Al usar el complemento JQuery Linkify, ¿cómo trunco la URL?
- 5. ¿Cómo trunco una cadena con puntos suspensivos en un bloque de texto de Silverlight?
- 6. ¿Cómo trunco una cadena java para caber en un número dado de bytes, una vez que UTF-8 está codificado?
- 7. ¿Cómo ordenar una lista según otra lista?
- 8. Cómo revertir una lista?
- 9. Cómo llenar una lista
- 10. Filtrado de una lista infinita en Haskell
- 11. cómo obtener una lista secundaria de una lista en ocaml
- 12. cómo comprobar si una lista contiene una lista secundaria
- 13. una lista> una lista de listas
- 14. ¿Cómo generar una lista `kwargs`?
- 15. ¿Cómo aleatorizar una lista ordenada?
- 16. ¿Cómo imprimir "correctamente" una lista?
- 17. ¿Cómo revertir una lista vinculada?
- 18. ¿Cómo ordenar una lista numéricamente?
- 19. ¿Cómo dividir una cadena en una lista?
- 20. En Python, ¿cómo indexo una lista con otra lista?
- 21. ¿Cómo hacer una lista genérica igual otra lista genérica
- 22. ¿Cómo puedo crear una nueva lista de la lista existente?
- 23. ¿Cómo inserto una lista en otra lista en python?
- 24. ¿Cómo se copia una lista vinculada a otra lista?
- 25. devolver una lista de elementos de una lista en OCaml
- 26. ¿Cómo analizo una cadena que representa una lista anidada en una lista real?
- 27. Si cortar no crea una copia de una lista ni lista() ¿cómo puedo obtener una copia real de mi lista?
- 28. Scala - convertir Lista de listas en una sola Lista: Lista [Lista [A]] en Lista [A]
- 29. Copiando una parte de una lista a una nueva lista
- 30. ¿Cómo implemento una lista personalizada en Cocoa?
¿qué has probado? – SilentGhost
posible duplicar http://stackoverflow.com/questions/1534939/how-to-trim-a-list-in-python –