¿Es Python bueno para estructuras de datos y algoritmos?
Sí, y para aprender se podría decir que es la mejor opción: el código es corto, así que lo que lees es el algoritmo, no la sintaxis que lo rodea. Conviene conocer dos contrapartidas. Python es más lento que Java o C++, lo que importa con los límites de tiempo ajustados de la programación competitiva pero rara vez en una entrevista, y sus estructuras integradas esconden los costes sobre los que estás aprendiendo a razonar; por eso esta ruta te hace construirlas primero.
¿Qué estructuras de datos de Python debo conocer para las entrevistas de programación?
list (un array dinámico), dict y set (tablas hash), tuple, collections.deque (una cola rápida por ambos extremos), heapq (un min-heap binario sobre una lista) y collections.Counter. Conoce lo que cuesta cada operación, no solo su nombre. Python no incluye lista enlazada, árbol, trie ni grafo, así que esos los escribes tú, en los pasos uno y dos.
¿Por qué implementar una pila o una cola si Python ya las tiene?
Porque en las entrevistas rara vez te piden usar una cola y a menudo te preguntan por qué tu solución es lenta. Una cola construida sobre una list paga cada pop(0), porque todos los elementos restantes se desplazan una posición; deque.popleft() no. Implementar cada estructura una vez es como aprendes los costes lo bastante bien como para elegir la adecuada sin pensarlo.
¿Es Python lo bastante rápido para la programación competitiva?
Para la mayoría de los problemas, sí. Con límites de tiempo ajustados, C++ es la opción más segura, razón por la que lo usa la mayoría de los programadores competitivos, y muchos jueces en línea ofrecen PyPy, que ejecuta el mismo código Python mucho más rápido. En una entrevista importa mucho más lo rápido que escribes que lo rápido que se ejecuta el código, y ahí gana Python.
¿Cuál es el límite de recursión de Python y es importante para DSA?
CPython se detiene por defecto en una profundidad de 1.000 llamadas, así que una búsqueda en profundidad recursiva sobre una cadena larga puede lanzar RecursionError. Puedes subir el límite con sys.setrecursionlimit, pero el mejor hábito, y el que a los entrevistadores les gusta ver, es saber sustituir la recursión por un bucle y una pila explícita: la estructura que construyes en el paso uno.
¿Necesito saber Python antes de empezar esta ruta?
Deberías manejarte con funciones, bucles, listas y diccionarios, e idealmente con clases, ya que aquí cada estructura se escribe como una clase. Si aún no llegas a ese nivel, el curso de Python de Coddy te lleva hasta ahí primero, gratis, y esta ruta continúa donde él termina.