slicing español python list definition sequence slice

español - ¿Diferencia entre lista, secuencia y segmento en Python?



slice object python (5)

¿Cuáles son las diferencias entre estos tipos de datos incorporados de Python: lista , secuencia y sector? Como lo veo, los tres representan esencialmente lo que C ++ y la matriz de llamadas Java.


En sentido estricto, una división es un tipo que representa un rango de índices, por ejemplo, un inicio, una parada y un paso. Una rebanada no es un tipo de contenedor en absoluto. Puede usar un sector para indexar una lista, lo que da como resultado una nueva lista que es una copia de una lista secundaria de la lista original.

Las listas difieren de las matrices de C ++ en que son heterogéneas; No se requiere que los elementos sean del mismo tipo. Y como MYYN ya ha señalado, la "secuencia" no es un tipo de Python, sino una descripción de una variedad de tipos incorporados.


Estás mezclando cosas muy diferentes en tu pregunta, así que solo responderé una pregunta diferente;

Ahora estás preguntando acerca de una de las interfaces más importantes de Python: iterable : básicamente es cualquier cosa que puedas usar como for elem in iterable .

iterable tiene tres descendientes: sequence , generator y mapping .

  • Una secuencia es un iterable con acceso aleatorio. Puede solicitar cualquier elemento de la secuencia sin tener que consumir los elementos anteriores. Con esta propiedad puede crear slices , que le dan más de un elemento a la vez. Una porción puede darte una subsecuencia: seq[from:until] y cada nth item: seq[from:until:nth] . list , tuple y str todas son secuencias.

  • Si el acceso se realiza mediante claves en lugar de posiciones enteras, tiene una asignación . dict es el mapeo básico.

  • El iterable más básico es un generador . No admite acceso aleatorio y, por lo tanto, no se corta. Tienes que consumir todos los artículos en el orden en que se dan. El generador normalmente solo crea sus elementos cuando se itera sobre ellos. La forma común de crear generators son expresiones generadoras. Se ven exactamente como la lista de comprensión, excepto entre paréntesis, por ejemplo (f(x) for x in y) . Al llamar a una función que usa la palabra clave de rendimiento, también se genera un generador.

El adaptador común a todos los iterables es el iterador . iterators tienen la misma interfaz que el tipo más básico que admiten, un generator . Se crean explícitamente al llamar a iter en un iterable y se utilizan implícitamente en todo tipo de construcciones de bucle.


Una lista es una secuencia, pero una secuencia no es necesariamente una lista. Una secuencia es cualquier tipo que admita la interfaz de secuencia ("protocolo"). Esto se hace tipificando pato en lugar de a través de una jerarquía de herencia estricta. Tenga en cuenta que las secuencias son contenedores, pero los contenedores no son necesariamente secuencias. (¡Las secuencias son, bueno, secuenciales!)

Consulte http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange

Los objetos de corte generalmente se crean implícitamente a través del azúcar sintáctico ( foo[2:5] ) y se proporcionan a los métodos especiales de tipo contenedor (como __getitem__ ) que puede reemplazar. Por lo general, no tendrá que lidiar con los segmentos a menos que cree sus propias secuencias / contenedores.

Consulte http://docs.python.org/reference/datamodel.html#specialnames

Las listas son comparables a las matrices. No estoy seguro, pero creo que está implementado en cPython como una matriz de expansión dinámica. Sin embargo, la interfaz hace que se parezca más a un vector C ++ STL que a una simple matriz antigua.


  • list son más que matrices simples. Puede inicializarlos sin dar el número de elementos. Puede append / push a ellos, puede remove / hacer pop / del ítem, puede tener listas de diferentes tipos de objetos (por ejemplo, [1,''e'', [3]] ), puede tener listas recursivas. ... y puede dividir listas, lo que significa obtener una nueva lista con solo algunos de los elementos.
  • slice son un tipo de objeto utilizado "detrás de la escena" para manejar la segmentación extendida en la a[start:stop:step] , como lo revela la help(slice) .

"Secuencia" no es un objeto, es más como una interfaz informal que algunos objetos como list implementan.


  • Las listas son un tipo de secuencia, similar a una matriz

  • los tipos de secuencia describen un superconjunto funcional:

Hay seis tipos de secuencia: cadenas, cadenas Unicode, listas, tuplas, búferes y objetos de rango naranja.

  • Las rodajas son una notación para subarreglos (o subcadenas, también)

Leer más ... http://docs.python.org/glossary.html