List comprehensions en Python parte II.

Поделиться
HTML-код
  • Опубликовано: 19 окт 2024

Комментарии • 29

  • @scandel3924
    @scandel3924 9 месяцев назад +19

    Se que no es una solución general al problema, pero haciendo
    lista_origen = lista_origen[1::2]
    tarda unos 8 milisegundos en vez de 20.
    También si trabajas con sets, puedes hacer s1.symmetric_difference(s2)

  • @cnslpsbly
    @cnslpsbly 11 месяцев назад +21

    Hola! Buen video, pero hay un error, .remove() no hace una nueva lista, puedes corroborar con ID se altera la lista en sitio. El problema de usar .remove es que se itera sobre toda la lista por cada elemento, la complejidad es n al cuadrado

    • @Lspadachin
      @Lspadachin 11 месяцев назад +2

      Sabes alguna lista de temas que pueda seguir para aprender más sobre eficiencia en los programas? 😁 me conozco los algoritmos básicos, se me da bien resolver los problemas pero la complejidad es súper importante y quiero mejorar en eso nadamás que no encuentro por dónde investigar y por experiencia de programar es mucho más tardado ir encontrando para cada caso en específico que ya saber los principios y aplicarlos a todo (creo...?) c;

    • @El_Vitas
      @El_Vitas 11 месяцев назад

      @@Lspadachin Busca wiki python time complexity. Te aparecen las principales funciones de las principales estructuras de datos de python

  • @vidallera8869
    @vidallera8869 11 месяцев назад +4

    @pildorasdeprogramacion no soy un experto en python pero creo que not in recorre el array (al igual que inclues en js) y la complejidad seria igualmente 0(n) (aun que quitamos malloc), no seria una mejor solucion unos punteros ?

  • @Alarez7
    @Alarez7 11 месяцев назад +4

    Estaria bien que hablaras mas de set no se usan mucho y son útiles por ejemplo una forma de resolver esto con set seria una el metodo distinct y tiene un rendimiento similar

  • @MiguelAngelRebazaApaza
    @MiguelAngelRebazaApaza 10 месяцев назад +1

    excelente 🎉

  • @sonnyakakitha2580
    @sonnyakakitha2580 11 месяцев назад +2

    Todo cool la primera solución que hiciste tiene una complejidad mayor a la del remove, para ser exactos tiene una complejidad O(n^2) ya que si, la list compresión va recorriendo la lista original pero con cada elemento pregunta ai x esta en el arreglo secundario, el operador in es lineal, por lo que por cada elemento de la lista original (n) busca por fuerza bruta en la lista secundaria( también n) y hacen O(n^2)
    Ya la segunda queda en (n log n) ya que buscar con el operador in en set es logaritmico.
    Si hubiera una forma de hacer una lista de tamaño fijo en python sin usar numpy, podriamos reducir esa complejidad a una complejidad lineal, peero gastaria mas memoria, todo cool

  • @themagoleo666
    @themagoleo666 11 месяцев назад +1

    Muy interesante 👍🏼

  • @andreasantel7784
    @andreasantel7784 10 месяцев назад

    Podrías hacer un vídeo en donde expliques como funciona O(n). Lo ví en estructura de datos pero no lo comprendí del todo.

  • @soloporcasualidad8725
    @soloporcasualidad8725 6 месяцев назад

    Entonces es mejor hacer una nueva lista en listas grandes en ves de remover un unico elemento?

  • @10tronic
    @10tronic 11 месяцев назад +1

    Tienes excelente contenido. Me suscribo. Te recomiendo ordenarlo mejor agregando los links de las partes en la descripción o un comentario fijado

  • @juangiraldo4028
    @juangiraldo4028 11 месяцев назад +1

    Bro quiero aprender python a tu nivel, vendes cursos o algo? Super tus vídeos 😊

  • @d4lep0ro
    @d4lep0ro 10 месяцев назад

    no necesitas usar 2 listas, con la operacion mod (%) ya podes saber si un elemento es par o no. Para todo numero entero, si la operacion % 2 es 0 entonces es par. Tambien es mejor usar una linked list para ir sacando los impares y no creas ninguna lista nueva desperdiciando espacio.

    • @anthonyfarias321
      @anthonyfarias321 8 месяцев назад

      Justo esto pensé. El mod debe ser mas rapido que chequear si un elemento existe en otra lista.

  • @gamas5883
    @gamas5883 11 месяцев назад +1

    Me suscribo

  • @unpayasocualquiera2417
    @unpayasocualquiera2417 11 месяцев назад +1

    ostias chaval epico 👍

  • @oxcar720
    @oxcar720 9 месяцев назад +1

    en mi compu demora 46ms con el set, mi ryzen 5 2600x se esta quedando atrás? :´c

    • @marly7549
      @marly7549 5 месяцев назад

      es porque depende del lenguaje, algoritmo y la computadora. Todo influye, y tu solo puedes controlar el lenguaje y algoritmo.

  • @gonzalocayunaoerices1569
    @gonzalocayunaoerices1569 10 месяцев назад +1

    import time
    lista_original = set(list(range(1,1_000_001)))
    lista_auxiliar = set(range(1, 1_000_001, 2))
    inicio = time.time()
    lista_resultado_3 = list(lista_original.difference(lista_auxiliar))
    fin = time.time()
    print(fin-inicio)
    print(lista_resultado_3[:10])

  • @sasukethehd3760
    @sasukethehd3760 9 месяцев назад

    Por que pone element for element in elements?? No es más fácil por for element in elements?

    • @sasukethehd3760
      @sasukethehd3760 9 месяцев назад

      Y este problema no se podría resolver usando árbol de búsqueda binaria?

    • @pildorasdeprogramacion
      @pildorasdeprogramacion  9 месяцев назад

      No entendi tu pregunta broo

    • @sasukethehd3760
      @sasukethehd3760 9 месяцев назад

      @@pildorasdeprogramacion la pregunta me refiero a por que se escribe el ciclo como "element for element in elements" en vez de "for element in elements"? Y la segunda pregunta, si este problema de eliminar los numeros impares en menos de un segundo se podria aplicar busqueda por arboles binarios? tipo recorrer un arbol binario y reemplazar cada valor quitandole los impares?

  • @CaminoalaLibertadd
    @CaminoalaLibertadd 10 месяцев назад +2

    2 vídeos solo para eso