Built-in https://interactivechaos.ovh/es es tuple https://interactivechaos.ovh/es/python/function/tuple <span class="field field--name-title field--type-string field--label-hidden">tuple</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mar, 19/01/2021 - 10:04</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">tuple</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>class tuple([iterable])</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La clase <strong>tuple</strong> devuelve un objeto iterable inmutable de tipo <em>tuple</em> (una tupla).</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>iterable</strong>: Objeto iterable cuyos elementos se desea incluir en la tupla generada.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>El resultado devuelto es una tupla.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Si partimos de un iterable como, por ejemplo, una lista:</p> <div class="codigo"> <p>a = [1, 3, "Python", True, 3 + 2j]<br /> a</p> </div> <div class="respuesta"> <p>[1, 3, 'Python', True, (3+2j)]</p> </div> <p>...podemos crear una tupla con el siguiente código:</p> <div class="codigo"> <p>tuple(a)</p> </div> <div class="respuesta"> <p>(1, 3, 'Python', True, (3+2j))</p> </div> </div> </div> </div> Tue, 19 Jan 2021 09:04:54 +0000 admin 2946 at https://interactivechaos.ovh slice https://interactivechaos.ovh/es/python/function/slice <span class="field field--name-title field--type-string field--label-hidden">slice</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mar, 19/01/2021 - 09:49</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">slice</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>class slice(stop)</p> <p>class slice(start, stop [, step])</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La clase <strong>slice</strong> devuelve un objeto representando los índices especificados por <a href="/es/python/function/range">range(start, stop, step)</a>.</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>start</strong>: Primer índice a generar en la secuencia.</li> <li><strong>stop</strong>: Valor límite del índice a generar.</li> <li><strong>step</strong>: (Opcional) valor a añadir a cada índice para generar el siguiente.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>El resultado es un objeto de la clase <em>slice</em>.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Podremos crear un objeto tipo <em>slice</em> que incluya referencias a los índices 1, 3 y 5 (es decir, índices comenzando en 2, terminando en 6 y con un salto de 2) con el siguiente código:</p> <div class="codigo"> <p>index = slice(1, 6, 2)<br /> index</p> </div> <div class="respuesta"> <p>slice(1, 6, 2)</p> </div> <p>Ahora, si tenemos, por ejemplo, una lista:</p> <div class="codigo"> <p>a = list("ABCDEFGH")<br /> a</p> </div> <div class="respuesta"> <p>['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']</p> </div> <p>...podemos extraer los elementos referenciados por nuestros índices de la siguiente forma:</p> <div class="codigo"> <p>a[index]</p> </div> <div class="respuesta"> <p>['B', 'D', 'F']</p> </div> </div> </div> </div> Tue, 19 Jan 2021 08:49:05 +0000 admin 2945 at https://interactivechaos.ovh set https://interactivechaos.ovh/es/python/function/set <span class="field field--name-title field--type-string field--label-hidden">set</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 18/01/2021 - 23:10</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">set</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>class set([iterable])</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La clase integrada <strong>set</strong> devuelve un conjunto formado por los elementos del iterable incluido como argumento.</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>iterable</strong>: Iterable cuyos elementos se incluirán como elementos del conjunto generado.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>El resultado devuelto es un objeto de la clase <em>set</em>.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Podemos obtener un conjunto formado por los elementos de una lista con el siguiente código:</p> <div class="codigo"> <p>a = [2, 4, 1, 5]</p> </div> <div class="codigo"> <p>set(a)</p> </div> <div class="respuesta"> <p>{1, 2, 4, 5}</p> </div> </div> <div class="field__item"><p>Si partimos de dos listas, podemos obtener los elementos comunes a ambas convirtiéndolas en conjuntos y ejecutando el método <em>intersection</em> de una de ellas:</p> <div class="codigo"> <p>a = [1, 2, 3, 4]<br /> b = [2, 4, 5, 6]</p> </div> <div class="codigo"> <p>set(a).intersection(b)</p> </div> <div class="respuesta"> <p>{2, 4}</p> </div> </div> </div> </div> Mon, 18 Jan 2021 22:10:27 +0000 admin 2944 at https://interactivechaos.ovh reversed https://interactivechaos.ovh/es/python/function/reversed <span class="field field--name-title field--type-string field--label-hidden">reversed</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Dom, 17/01/2021 - 15:38</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">reversed</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>reversed(seq)</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La función <strong>reversed</strong> devuelve un iterador formado por los valores del objeto incluido como argumento tras invertir su orden.</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>seq</strong>: Secuencia a invertir.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>La función <em>reversed</em> devuelve un iterador.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Si partimos de una lista:</p> <div class="codigo"> <p>a = [1, 2, 3, 4]</p> </div> <p>...podemos crear un iterador que devuelva los valores de la lista en orden inverso con el siguiente código:</p> <div class="codigo"> <p>r = reversed(a)<br /> r</p> </div> <div class="respuesta"> <p>&lt;list_reverseiterator at 0x177c82872e0&gt;</p> </div> <p>Si queremos visualizar los valores podemos convertir el resultado en una lista:</p> <div class="codigo"> <p>list(r)</p> </div> <div class="respuesta"> <p>[4, 3, 2, 1]</p> </div> </div> </div> </div> Sun, 17 Jan 2021 14:38:18 +0000 admin 2943 at https://interactivechaos.ovh range https://interactivechaos.ovh/es/python/function/range <span class="field field--name-title field--type-string field--label-hidden">range</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Dom, 17/01/2021 - 12:25</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">range</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>range(stop)</p> <p>range(start, stop[, step])</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La función <strong>range</strong> representa una secuencia inmutable de números enteros. Si se utiliza pasándole un único argumento <em>stop</em>, genera una secuencia de números enteros consecutivos entre 0 y <em>stop</em>-1. Si se utiliza pasándole dos argumentos, <em>start</em> y <em>stop</em>, genera una secuencia de números enteros consecutivos entre <em>start</em> y <em>stop</em>-1. En este último caso, la inclusión de un tercer argumento <em>step</em> fuerza a que la secuencia de números se genere con un salto de "<em>step</em>" entre un número y el siguiente.</p> <p>El argumento <em>step</em> no puede ser cero.</p> <p>Si <em>step</em> es positivo, <em>start</em> deberá ser un número menor que <em>stop</em>. En cualquier otro caso la secuencia generada estará vacía.</p> <p>Si step es negativo, <em>start</em> deberá ser un número mayor que <em>stop</em>. También en este caso de no ser así se generará una secuencia vacía.</p> <p>Una de las ventajas de <em>range</em> con respecto a otras estructuras semejantes (como una lista o una tupla) es que <em>range</em> va a ocupar siempre una cantidad mínima de memoria (la necesaria para almacenar los argumentos <em>start</em>, <em>stop</em> y <em>step</em>), calculándose los números generados o los subrangos cuando resulte necesario.</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>start</strong>: Primer número a generar en la secuencia.</li> <li><strong>stop</strong>: Valor límite de la secuencia a generar.</li> <li><strong>step</strong>: (Opcional) valor a añadir a cada número para generar el siguiente.</li> </ul><p><em>start</em>, <em>stop</em> y <em>step</em> deberán ser números enteros.</p></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>La función <strong>range</strong> genera un objeto de tipo <em>range</em> que representa una secuencia de números enteros.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Podemos generar un rango de números con la función <em>range</em> y utilizarlo en un bucle for:</p> <div class="codigo"> <p>for i in range(4):<br />     print(i)</p> </div> <div class="respuesta"> <p>0<br /> 1<br /> 2<br /> 3</p> </div> <p>En este caso solo hemos pasado un argumento a la función (el número 4), por lo que la secuencia generada está formada por los números enteros entre el 0 y el 3, ambos incluidos.</p> </div> <div class="field__item"><p>Si pasamos a la función dos argumentos, por ejemplo el 3 y el 7, estaríamos generando una secuencia de 4 números, entre el 3 y el 6 ambos incluidos:</p> <div class="codigo"> <p>for i in range(3, 7):<br />     print(i)</p> </div> <div class="respuesta"> <p>3<br /> 4<br /> 5<br /> 6</p> </div> </div> <div class="field__item"><p>Un tercer argumento representa el salto entre los números a generar. En este ejemplo generamos el rango y lo convertimos en lista con la función <a href="/es/python/function/list">list</a>:</p> <div class="codigo"> <p>list(range(5, 30, 6))</p> </div> <div class="respuesta"> <p>[5, 11, 17, 23, 29]</p> </div> <p>En este caso el primer valor es el 5 y los siguientes se calculan añadiendo al anterior el incremento (6).</p> </div> <div class="field__item"><p>Es posible extraer una selección de la secuencia generada como si de una lista o tupla se tratase:</p> <div class="codigo"> <p>r = range(10, 20)<br /> r</p> </div> <div class="respuesta"> <p>range(10, 20)</p> </div> <div class="codigo"> <p>r[3:6]</p> </div> <div class="respuesta"> <p>range(13, 16)</p> </div> </div> <div class="field__item"><p>Si el parámetro <em>step</em> toma un valor negativo, los números se generan restando dicho valor al número anterior:</p> <div class="codigo"> <p>list(range(10, 5, -1))</p> </div> <div class="respuesta"> <p>[10, 9, 8, 7, 6]</p> </div> </div> </div> </div> Sun, 17 Jan 2021 11:25:55 +0000 admin 2942 at https://interactivechaos.ovh next https://interactivechaos.ovh/es/python/function/next <span class="field field--name-title field--type-string field--label-hidden">next</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Jue, 14/01/2021 - 18:14</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">next</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>next(iterator [, default])</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La función <strong>next</strong> devuelve el siguiente elemento del iterador incluido como primer argumento invocando su método <em>__next__</em>.</p> <p>En el caso de que el iterador esté vacío se generará una excepción de tipo <em>StopIteration</em> salvo que se haya incluido un segundo argumento ("<em>default</em>"), en cuyo caso se devolverá como resultado de la función.</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>iterator</strong>: Iterador del que extraer el siguiente elemento.</li> <li><strong>default</strong>: Valor a devolver si no hay elementos en el iterador.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>La función <em>next</em> devuelve un elemento del iterable indicado, sea del tipo que sea.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Si partimos del siguiente iterador creado a partir de una lista:</p> <div class="codigo"> <p>a = iter([2, 4, 6, 8])</p> </div> <p>...podemos extraer su primer valor ejecutando la función <em>next</em> y pasando el iterador como argumento:</p> <div class="codigo"> <p>next(a)</p> </div> <div class="respuesta"> <p>2</p> </div> <p>Cada ejecución de la función <em>next</em> devolverá el siguiente elemento:</p> <div class="codigo"> <p>next(a)</p> </div> <div class="respuesta"> <p>4</p> </div> <div class="codigo"> <p>next(a)</p> </div> <div class="respuesta"> <p>6</p> </div> <div class="codigo"> <p>next(a)</p> </div> <div class="respuesta"> <p>8</p> </div> <p>...hasta que el iterador no incluya más elementos, en cuyo caso se devuelve una excepción:</p> <div class="codigo"> <p>next(a)</p> </div> <div class="respuesta"> <p>---------------------------------------------------------------------------<br /> StopIteration                             Traceback (most recent call last)<br /> &lt;ipython-input-6-15841f3f11d4&gt; in &lt;module&gt;<br /> ----&gt; 1 next(a)</p> <p>StopIteration: </p> </div> </div> <div class="field__item"><p>Si se incluye el segundo argumento, <em>default</em>, será el valor devuelto cuando el iterable no incluya ningún elemento. Por ejemplo, partimos del mismo iterador que en el ejemplo anterior:</p> <div class="codigo"> <p>a = iter([2, 4, 6, 8])</p> </div> <p>...y ejecutamos un bucle while leyendo el siguiente elemento hasta que éste sea <em>None</em>, valor por defecto incluido como segundo argumento en la función <em>next</em>:</p> <div class="codigo"> <p>result = ""<br /> while result != None:<br />     result = next(a, None)<br />     print(result)</p> </div> <div class="respuesta"> <p>2<br /> 4<br /> 6<br /> 8<br /> None</p> </div> </div> </div> </div> Thu, 14 Jan 2021 17:14:19 +0000 admin 2937 at https://interactivechaos.ovh iter https://interactivechaos.ovh/es/python/function/iter <span class="field field--name-title field--type-string field--label-hidden">iter</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Jue, 14/01/2021 - 17:41</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">iter</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>iter(object [, sentinel])</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La función <strong>iter</strong> devuelve un objeto iterable a partir de otro objeto. En su configuración más sencilla solo recibirá un argumento -el objeto a convertir en iterable-. Esto requiere que dicho objeto soporte los protocolos de iteración o de secuencia (métodos <em>__iter__</em> y <em>__getitem__</em> respectivamente). Si no soporta ninguno de ellos la función <em>iter</em> devolverá un error de tipo (<em>TypeError</em>).</p> <p>Si la función <em>iter</em> recibe un segundo argumento ("<em>sentinel</em>"), el objeto incluido como primer argumento deberá ser de tipo <em>callable</em> (que incluya el método <em>__call__</em>). En este caso, el iterador generado por <em>iter</em> invocará al objeto para cada ejecución del método <em>__next__()</em>: Si el valor que se reciba es igual a <em>sentinel</em> se generará una excepción de tipo <em>StopIteration</em>. En caso contrario se devolverá el valor recibido (véase ejemplo más adelante).</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>object</strong>: Objeto a convertir a iterable.</li> <li><strong>sentinel</strong>: Valor para el que el iterable generado devolverá una excepción de tipo <em>StopIteration.</em></li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>La función <em>iter</em> devuelve un iterable.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Si partimos de la siguiente lista:</p> <div class="codigo"> <p>a = [2, 4, 6, 8]</p> </div> <p>...podemos convertirla en un iterable con el siguiente código:</p> <div class="codigo"> <p>a_iter = iter(a)<br /> a_iter</p> </div> <div class="respuesta"> <p>&lt;list_iterator at 0x173e84d6850&gt;</p> </div> <p>Es posible usar la función <a href="/es/python/function/next">next</a> para ir extrayendo los valores del iterable:</p> <div class="codigo"> <p>next(a_iter)</p> </div> <div class="respuesta"> <p>2</p> </div> <div class="codigo"> <p>next(a_iter)</p> </div> <div class="respuesta"> <p>4</p> </div> </div> <div class="field__item"><p>Para probar el uso del segundo argumento, <em>sentinel</em>, creemos una función (objeto "<em>callable</em>") que, por ejemplo, genere un número entero aleatorio entre 0 y 5, ambos incluidos:</p> <div class="codigo"> <p>import random</p> </div> <div class="codigo"> <p>def f():<br />     return random.randint(0, 5)</p> </div> <p>Ahora convirtámosla en iterable indicando como centinela el número 3:</p> <div class="codigo"> <p>f_iter = iter(f, 3)</p> </div> <p>Esto significa que, cada vez que se ejecute la función <a href="/es/python/function/next">next</a> sobre <em>f_iter</em> se comparará el valor obtenido con el número 3 y, si coincide, se generará una excepción:</p> <div class="codigo"> <p>while True:<br />     print(next(f_iter))</p> </div> <div class="respuesta"> <p>4<br /> 0<br /> 1<br /> 5<br /> 2<br /> ---------------------------------------------------------------------------<br /> StopIteration                             Traceback (most recent call last)<br /> &lt;ipython-input-8-47d3ed0dc577&gt; in &lt;module&gt;<br />       1 while True:<br /> ----&gt; 2     print(next(f_iter))</p> <p>StopIteration: </p> </div> </div> </div> </div> Thu, 14 Jan 2021 16:41:41 +0000 admin 2936 at https://interactivechaos.ovh map https://interactivechaos.ovh/es/python/function/map <span class="field field--name-title field--type-string field--label-hidden">map</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Jue, 14/01/2021 - 17:07</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">map</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>map(function, iterable [, iterable...])</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La función <strong>map</strong> aplica una función a los valores del iterable que se indique como argumento. En el caso de que se indiquen dos o más iterables como argumentos, la función considerará sus valores en paralelo, dejando de devolver valores en cuanto se alcance el final del iterable más corto (véanse ejemplos más adelante).</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>function</strong>: Función a aplicar a los elementos del iterable.</li> <li><strong>iterable</strong>: Iterable a cuyos elementos se aplicará la función.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>La función <em>map</em> devuelve un iterable.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Si partimos de un iterable como, por ejemplo, una lista:</p> <div class="codigo"> <p>a = [1, 2, 3, 4]</p> </div> <p>...podemos aplicarle una función que eleve al cuadrado sus valores con el siguiente código:</p> <div class="codigo"> <p>def squared(n):<br />     return n ** 2</p> </div> <div class="codigo"> <p>map(squared, a)</p> </div> <div class="respuesta">&lt;map at 0x237f6fe50a0&gt;</div> <p>Como vemos, el resultado es un objeto de tipo <em>map</em>:</p> <div class="codigo"> <p>type(map(squared, a))</p> </div> <div class="respuesta"> <p>map</p> </div> <p>Si queremos visualizar su contenido podemos convertirlo en, por ejemplo, una lista:</p> <div class="codigo"> <p>list(map(squared, a))</p> </div> <div class="respuesta"> <p>[1, 4, 9, 16]</p> </div> </div> <div class="field__item"><p>En un caso como el anterior resulta mucho más práctico definir la función como función lambda directamente como argumento de <em>map</em>:</p> <div class="codigo"> <p>list(map(lambda n: n** 2, a))</p> </div> <div class="respuesta"> <p>[1, 4, 9, 16]</p> </div> </div> <div class="field__item"><p>Si la función <em>map</em> recibe dos o más iterables como argumentos, aplicará la función indicada a los elementos de los iterables en paralelo. Por ejemplo, supongamos que partimos de las siguientes dos listas:</p> <div class="codigo"> <p>a = [1, 2, 3, 4]<br /> b = [2, 4, 6, 8]</p> </div> <p>Si queremos sumar sus valores dos a dos, podemos hacerlo definiendo una función que reciba dos valores y devuelva su suma, y usar esta función como primer argumento de <em>map</em>:</p> <div class="codigo"> <p>def addition(m, n):<br />     return m + n</p> </div> <div class="codigo"> <p>list(map(addition, a, b))</p> </div> <div class="respuesta"> <p>[3, 6, 9, 12]</p> </div> <p>Como podemos ver, el resultado se ha calculado sumando el primer elemento de "<em>a</em>" con el primer elemento de "<em>b</em>", el segundo de "<em>a</em>" con el segundo de "<em>b</em>", etc.</p> <p>Nuevamente, también aquí podríamos optar por utilizar una función lambda como primer argumento:</p> <div class="codigo"> <p>list(map(lambda m, n: m + n, a, b))</p> </div> <div class="respuesta"> <p>[3, 6, 9, 12]</p> </div> </div> <div class="field__item"><p>Si los iterables incluidos como argumentos no tienen el mismo número de elementos, la función <em>map</em> aplica la función en paralelo hasta alcanzar el final del iterable más corto.</p> <p>Por ejemplo, si partimos de las siguientes tres listas con 5, 3 y 4 elementos respectivamente:</p> <div class="codigo"> <p>a = [1, 2, 3, 4, 5]<br /> b = [2, 4, 6]<br /> c = [1, 2, 4, 8]</p> </div> <p>...y aplicamos una función que, por ejemplo, sume sus elementos:</p> <div class="codigo"> <p>list(map(lambda m, n, r: m + n + r, a, b, c))</p> </div> <div class="respuesta"> <p>[4, 8, 13]</p> </div> <p>...comprobamos que solo de devuelven valores para los primeros tres elementos.</p> </div> </div> </div> Thu, 14 Jan 2021 16:07:00 +0000 admin 2935 at https://interactivechaos.ovh issubclass https://interactivechaos.ovh/es/python/function/issubclass <span class="field field--name-title field--type-string field--label-hidden">issubclass</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mié, 13/01/2021 - 17:40</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">issubclass</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>issubclass(class, classinfo)</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La función <strong>issubclass</strong> recibe como argumento dos clases, <em>class</em> y <em>classinfo</em>, y devuelve el booleano <em>True</em> si <em>class</em> es subclase de <em>classinfo</em>, o <em>False</em> en caso contrario.</p> <p>Una clase siempre se considera subclase de sí misma.</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>class</strong>: Clase a evaluar.</li> <li><strong>classinfo</strong>: Clase de la que se desea saber si <em>class</em> es o no subclase.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>La función <em>issubclass</em> devuelve un booleano.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Para probar esta función vamos a crear una clase y una subclase de ella:</p> <div class="codigo"> <p>class circle:<br />     def __init__(self, radio):<br />         self.radio = radio</p> </div> <div class="codigo"> <p>class colored_circle(circle):<br />     def __init__(self, radio, color):<br />         super().__init__(radio)<br />         self.color = color</p> </div> <p>Podemos ahora confirmar si la clase <em>colored_circle</em> es subclase de <em>circle</em> con el siguiente código:</p> <div class="codigo"> <p>issubclass(colored_circle, circle)</p> </div> <div class="respuesta"> <p>True</p> </div> <p>Sin embargo:</p> <div class="codigo"> <p>issubclass(colored_circle, int)</p> </div> <div class="respuesta"> <p>False</p> </div> <p>...pues <em>colored_circle</em> no es, por supuesto, subclase de los números enteros.</p> </div> <div class="field__item"><p>Una clase siempre se considera subclase de sí misma:</p> <div class="codigo"> <p>issubclass(circle, circle)</p> </div> <div class="respuesta"> <p>True</p> </div> </div> </div> </div> Wed, 13 Jan 2021 16:40:01 +0000 admin 2934 at https://interactivechaos.ovh isinstance https://interactivechaos.ovh/es/python/function/isinstance <span class="field field--name-title field--type-string field--label-hidden">isinstance</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mié, 13/01/2021 - 15:24</span> <div class="field field--name-field-fun-python-nombre-completo field--type-string field--label-above"> <div class="field__label">Nombre completo</div> <div class="field__item">isinstance</div> </div> <div class="field field--name-field-libreria field--type-entity-reference field--label-above"> <div class="field__label">Librería</div> <div class="field__item">Built-in</div> </div> <div class="clearfix text-formatted field field--name-field-funcion-python-sintaxis field--type-text-long field--label-above"> <div class="field__label">Sintaxis</div> <div class="field__item"><p>isinstance(object, classinfo)</p></div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>La función <strong>isinstance</strong> recibe como argumentos un objeto y una clase y devuelve <em>True</em> si el objeto es una instancia de dicha clase o de una subclase de ella.</p> <p>El segundo argumento (la clase) puede ser también una tupla de clases o una estructura recursiva de tuplas de clases en cuyo caso se devolverá <em>True</em> si el objeto pertenece a alguna de las clases contenidas en la estructura.</p></div> </div> <div class="clearfix text-formatted field field--name-field-parametros field--type-text-long field--label-above"> <div class="field__label">Parámetros</div> <div class="field__item"><ul><li><strong>object</strong>: Objeto a evaluar.</li> <li><strong>classinfo</strong>: Nombre de clase, tupla de nombres de clases o estructura recursiva de tuplas conteniendo nombres de clases.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-python-funcion-resultado field--type-text-long field--label-above"> <div class="field__label">Resultado</div> <div class="field__item"><p>La función <em>isinstance</em> devuelve un booleano.</p></div> </div> <div class="clearfix text-formatted field field--name-field-ejemplos field--type-text-long field--label-above"> <div class="field__label">Ejemplos</div> <div class="field__items"> <div class="field__item"><p>Podemos comprobar si el número entero 5 pertenece a la clase <em>int</em> con el siguiente código:</p> <div class="codigo"> <p>isinstance(5, int)</p> </div> <div class="respuesta"> <p>True</p> </div> <p>Si pasásemos como segundo argumento el nombre de la clase <em>str</em> (cadenas de texto), la función devuelve <em>False</em>:</p> <div class="codigo"> <p>isinstance(5, str)</p> </div> <div class="respuesta"> <p>False</p> </div> </div> <div class="field__item"><p>El argumento <em>classinfo</em> puede ser una tupla de nombres de clases, devolviéndose <em>True</em> si el objeto analizado pertenece a alguna de ellas:</p> <div class="codigo"> <p>isinstance(5, (int, str))</p> </div> <div class="respuesta"> <p>True</p> </div> <div class="codigo"> <p>isinstance(5, (bool, str))</p> </div> <div class="respuesta"> <p>False</p> </div> </div> <div class="field__item"><p>También puede ser una estructura recursiva de tuplas:</p> <div class="codigo"> <p>isinstance(5, ((int, str), (float, bool)))</p> </div> <div class="respuesta"> <p>True</p> </div> <div class="codigo"> <p>isinstance(5, ((complex, str), (float, bool)))</p> </div> <div class="respuesta"> <p>False</p> </div> </div> <div class="field__item"><p>Podemos probar la función con una clase personalizada:</p> <div class="codigo"> <p>class circulo:<br />     def __init__(self, radio):<br />         self.radio = radio</p> </div> <div class="codigo"> <p>c = circulo(3)</p> </div> <div class="codigo"> <p>isinstance(c, circulo)</p> </div> <div class="respuesta"> <p>True</p> </div> </div> <div class="field__item"><p>Si el objeto es una instancia de una subclase de la clase indicada, la función también devuelve <em>True</em>. Por ejemplo, creemos una subclase de la clase <em>circulo</em>:</p> <div class="codigo"> <p>class circulo_coloreado(circulo):<br />     def __init__(self, radio, color):<br />         super().__init__(radio)<br />         self.color = color</p> </div> <div class="codigo"> <p>c_azul = circulo_coloreado(5, "azul")</p> </div> <p>La variable c_azul es una instancia de la subclase recién creada, por lo que pasar la variable y el nombre de la subclase a la función <em>isinstance</em> devuelve el booleano <em>True</em>:</p> <div class="codigo"> <p>isinstance(c_azul, circulo_coloreado)</p> </div> <div class="respuesta"> <p>True</p> </div> <p>Pero pasar a la función el nombre de la variable y la clase padre también devuelve <em>True</em>:</p> <div class="codigo"> <p>isinstance(c_azul, circulo)</p> </div> <div class="respuesta"> <p>True</p> </div> </div> </div> </div> Wed, 13 Jan 2021 14:24:34 +0000 admin 2933 at https://interactivechaos.ovh