Tuplas, Listas, Rangos, y los signos de agrupación:
( ), [ ], { }

Tuplas
En Python, una tupla es un conjunto ordenado e inmutable de elementos del mismo o diferente tipo.
Las tuplas se representan escribiendo los elementos entre paréntesis y separados por comas.
Si quieres crear una tupla vacía puedes hacer lo siguiente:
tupla_vacia = ( )
Si lo que quieres es definir una tupla con algunos elementos, la puedes realizar de la siguiente manera. Recuerda que puedes combinar elementos de diferentes tipos:
tupla =(1,2.5,'casa')
Recuerda, una tupla en Python es una colección no modificable de objetos y su definición se hace mediante el uso de paréntesis y por tanto no puedes modificar una tupla, es decir, no puedes eliminar o añadir elementos. Lo que sí se puede hacer es modificar un objeto que haya dentro de una tupla si este es modificable.
La función: len ( ) puede contar los elemntos de una tupla incluso si esta esta vacia:

En la anterior el resultado es 0
En la siguinete el resultado es 3

Nota que una tupla puede contener diferentes tipos de elentos, enteros, decimales, texto etc.
Una tupla puede incluir un único elemento, pero para que Python entienda que nos estamos refiriendo a una tupla es necesario escribir al menos una coma.
En el caso de no poner ninguna coma Python interpreta la expresión como un elemento comun de su tipo, int, float o str, etc. y no como una tupla de elementos invariables.
Python nececita una coma al final de cada tupla, aun que esta sea de un único elemento, para indicar que se trata de una tupla, pero esa coma no indica necesariamente que haya un elemento después.
Listas
Las listas son una estructura de datos muy flexible. Python permite manipular listas de muchas maneras. En esta lección aprenderás algunas de ellas.
Las listas son conjuntos ordenados de elementos (números, cadenas, listas, etc).
Las listas se delimitan por corchetes [ ] y los elementos se separan por comas.
Las listas pueden contener:
1. Elementos del mismo tipo.
2. Elementos de tipos distintos.
3. Otras listas.
4. Niveles de anidamiento.
El anidamiento (llamado nesting en inglés) es la práctica de incorporar llamadas(calls) a funciones o procedimientos (unas) dentro de otras, mediante la inclusión de diversos niveles de paréntesis.
Naturalmente, para la resolución matemática de estas complejas fórmulas encadenadas, las expresiones deben ser evaluadas desde adentro hacia afuera, ya que los resultados de las más internas sirven, temporalmente, de datos de entrada de las exteriores.
Las variables de tipo lista hacen referencia a la lista completa.

Una lista que no contiene ningún elemento se denomina lista vacía:
lista = [ ]
Al definir una lista se puede hacer referencia a otras variables.

Donde el resultado será:
[10, 'A', '?']
Hay que tener cuidado al modificar una variable que se ha utilizado para definir otras variables, porque esto puede afectar al resto de variables.