2012-09-10 48 views
26

¿La única diferencia entre conjuntos y listas en Python es el hecho de que puede usar las funciones de unión, intersección, diferencia y diferencia simétrica para comparar dos conjuntos? ¿Por qué no pueden estas funciones simplemente aplicarse a las listas? ¿En qué situaciones los conjuntos son más útiles que las listas?¿Cuál es la diferencia entre conjuntos y listas en Python?

+1

Conjuntos, por definición, no incluyen valores duplicados; Supongo que Python, al igual que otros idiomas, permitirá entradas duplicadas en una lista. –

+1

Esto se presenta bastante bien en la documentación. [Sets] (http://docs.python.org/tutorial/datastructures.html#sets) y [Lists] (http://docs.python.org/tutorial/datastructures.html#more-on-lists) –

Respuesta

54

Hay una gran diferencia.

  1. conjuntos no pueden contener duplicados
  2. Los conjuntos son desordenada
  3. el fin de encontrar un elemento en un conjunto, se utiliza una búsqueda de hash (que es la razón por conjuntos no tienen orden). Esto hace que __contains__ (operador in) sea mucho más eficiente para conjuntos que listas.
  4. Los conjuntos solo pueden contener elementos con capacidad de manipulación (consulte el n. ° 3). Si tratas: set(([1],[2])) obtendrás un TypeError.

En las aplicaciones prácticas, las listas son muy agradables para ordenar y ordenar, mientras que los conjuntos son agradables de usar cuando no quiere duplicados y no le importa el orden.

También tenga en cuenta que si no se preocupan por orden, etc., puede utilizar

new_set = myset.intersection(mylist) 

para obtener la intersección entre un set y una list.

+2

Además, los conjuntos pueden contener solo objetos que son hashable; las listas pueden contener cualquier tipo de objeto. – kindall

+0

@kindall - Eso está implícito en la explicación del n. ° 3, pero la he agregado como n. ° 4 para hacerlo más explícito. Gracias por el comentario. – mgilson

5

sets - colecciones no ordenadas de elementos únicos

lists - ordenó colecciones de elementos

sets le permite hacer operaciones como intersection, union, difference y symmetric difference, operaciones es decir de la teoría de conjuntos de matemáticas. Conjuntos no permite la indexación y se implementan en tablas hash.

lists son realmente matrices de longitud variable, no listas vinculadas al estilo Lisp. En las listas, se accede a los elementos por índices.

2

Algunos más diferencias son:

  1. lista puede ser 2-D, mientras que un conjunto no puede.
  2. Como la lista que se ordena (es decir, el número de serie) es comparativamente lenta en la ejecución, mientras que los conjuntos son rápidos.
  3. La lista en python es como Array of java o c.
  4. La impresión de un conjunto casi siempre proporciona una secuencia de salida diferente.
+1

un conjunto puede tener tantas dimensiones como desee, siempre que use 'frozenset' – Copperfield

2

El conjunto representa una colección de elementos distintos. En Python, los conjuntos se utilizan principalmente por dos razones: (Libro Ciencia de datos desde cero, Joel Gruce):

  1. Para un funcionamiento más rápido: en es una operación muy rápida en conjuntos.Si tenemos una gran colección de elementos y si deseamos realizar una prueba de membresía, en ese caso es apropiado usar un conjunto en lugar de una lista.

  2. Para encontrar elementos distintos en una colección. Los programadores usan conjuntos con mucha menos frecuencia que los dicts y las listas.

2

Python SET:

Set es una colección desordenada de artículos únicos. Set está definido por valores separados por comas dentro de llaves {}. Los artículos en un conjunto no están ordenados.

El conjunto es una colección desordenada, la indexación no tiene ningún significado. Por lo tanto, el operador de división [] no funciona.

>>> a = {1,2,2,3,3,3} 
>>> a 
set([1, 2, 3]) 
>>> a[1] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'set' object does not support indexing 

lista de Python:

lista es una secuencia ordenada de elementos. Es uno de los tipos de datos más utilizados en Python y es muy flexible. Todos los elementos en una lista no necesitan ser del mismo tipo.

Declarar una lista es bastante directo. Los elementos separados por comas se incluyen entre corchetes [].

>>> a = [1, 2.2, 'python'] 

Podemos utilizar el operador de división [] para extraer un elemento o una gama de elementos de una lista. El índice comienza la forma 0 en Python.

Las listas son mutables, es decir, se puede modificar el valor de los elementos de una lista.

Reference

Cuestiones relacionadas