Articles of iterable desembalaje

¿Es posible asignar un valor predeterminado al desempaquetar?

Tengo los siguientes >>> myString = “has spaces” >>> first, second = myString.split() >>> myString = “doesNotHaveSpaces” >>> first, second = myString.split() Traceback (most recent call last): File “”, line 1, in ValueError: need more than 1 value to unpack Me gustaría tener el second valor predeterminado en None si la cadena no tiene ningún […]

Sintaxis de la syntax python starred expresiones

Estoy tratando de descomprimir el conjunto de números de teléfono de una secuencia, el shell de Python a su vez genera un error de syntax no válido. Estoy usando python 2.7.1. Aquí está el fragmento >>> record = (‘Dave’, ‘dave@example.com’, ‘773-555-1212’, ‘847-555-1212’) >>> name, email, *phone-numbers = record SyntaxError: invalid syntax >>> Por favor explique. […]

Desembalaje generalizaciones

>>> LOL = [[1, 2], [‘three’]] >>> [*LOL[0], *LOL[1]] [1, 2, ‘three’] ¡Bien! Adiós itertools.chain . Nunca me gustaste mucho de todos modos. >>> [*L for L in LOL] File “”, line 1 [*L for L in LOL] ^ SyntaxError: iterable unpacking cannot be used in comprehension Oh ¿Por qué no podemos tener cosas buenas? […]

Terminología de Python: cosas a la izquierda de “= argv” en el ejercicio 13 de Learn Python the Hard Way

“Learn Python the Hard Way” de Zed Shaw con frecuencia le pide que “escriba en inglés” lo que hacen todas y cada una de las líneas de un script. Estoy luchando para hacer eso con algunas cosas asociadas con la función (command?) Argv porque no sé cómo nombrar ciertas partes del código. Diablos, ni siquiera […]

Forma idiomática de descomprimir la lista de longitud variable de tamaño máximo n

Estoy leyendo un archivo y desempaquetando cada línea de esta manera: for line in filter(fh): a, b, c, d = line.split() Sin embargo, es posible que la línea tenga más o menos columnas que las variables que deseo desempaquetar. En el caso de que haya menos, me gustaría asignar None a las variables colgantes, y […]

Desembalaje de tuplas en una lista de comprensión de python (no se puede usar el operador *)

Estoy tratando de crear una lista basada en otra lista, con los mismos valores repetidos 3 veces consecutivas. En este momento, estoy usando: >>> my_list = [ 1, 2 ] >>> three_times = [] >>> for i in range( len( my_list ) ): … for j in range( 3 ): … three_times.append( my_list[ i ] […]

Python star desempaquetando para la versión 2.7

Como se mencionó aquí , puede usar la estrella para descomprimir un número desconocido de variables (como en las funciones), pero solo en python 3: >>> a, *b = (1, 2, 3) >>> b [2, 3] >>> a, *b = (1,) >>> b [] En Python 2.7, lo mejor que puedo hacer es (no terrible, […]

Cambiar lo que hacen los operadores * splat y ** splatty-splat a mi objeto

¿Cómo anula el resultado de desempaquetar la syntax *obj y **obj ? Por ejemplo, ¿puedes crear de alguna manera un objeto que se comporte de esta manera? >>> [*thing] [‘a’, ‘b’, ‘c’] >>> [x for x in thing] [‘d’, ‘e’, ‘f’] >>> {**thing} {‘hello world’: ‘I am a potato!!’} Nota: la iteración a través de […]

¿Cómo convierto una tupla de tuplas a una lista unidimensional utilizando la comprensión de lista?

Tengo una tupla de tuplas, por ejemplo: tupleOfTuples = ((1, 2), (3, 4), (5,)) Quiero convertir esto en una lista plana y unidimensional de todos los elementos en orden: [1, 2, 3, 4, 5] He estado tratando de lograr esto con la lista de comprensión. Pero parece que no puedo entenderlo. Pude lograrlo con un […]

Operador estrella * en el lado izquierdo y derecho de una statement de asignación

Estas preguntas provienen de PEP 448 – Generalizaciones de desempaquetado adicionales y está presente en Python 3.5 por lo que sé (y no está respaldado a 2.x ). Específicamente, en la sección Desventajas , se observa lo siguiente: Mientras que *elements, = iterable hace que los elements sean una list , elements = *iterable , […]