Articles of lista comprensión

Cómo usar el nombre de la lista desde la variable de cadena

Estoy generando estas 2 listas usando lista de comprensión. lists = [‘month_list’, ‘year_list’] for values in lists: print [] >>> [‘2012’, ‘2011’, ‘2010’, ‘2009’, ‘2008’, ‘2007’, ‘2006’, ‘2005’, ‘2004’, ‘2003’] >>> [‘January’, ‘February’, ‘March’, ‘April’, ‘May’, ‘June’, ‘July’, ‘August’, ‘September’, ‘October’, ‘November’, ‘December’] Quiero añadir estas 2 listas generadas dinámicamente a los nombres de esta […]

Promedio de una lista de números, almacenados como cadenas en una lista de Python

Quiero calcular el valor promedio de varias listas en python. Estas listas contienen números como cadenas. La cadena vacía no es cero, significa un valor faltante. Lo mejor que se me ocurre es esto. ¿Hay una forma más elegante, sucinta y eficiente de escribir esto? num = [‘1’, ‘2’, ”, ‘6’] total = sum([int(n) if […]

¿Cómo subir una lista enlazada usando una comprensión de lista?

He estado tratando de pensar en una forma de atravesar una estructura jerárquica, como una lista vinculada, usando una expresión de lista, pero no he encontrado nada que parezca funcionar. Básicamente, quiero convertir este código: p = self.parent names = [] while p: names.append(p.name) p = p.parent print “.”.join(names) en una sola línea como: print […]

Python nested dict comprensión con conjuntos

¿Alguien puede explicar cómo hacer dictados nesteds? >> l = [set([1, 2, 3]), set([4, 5, 6])] >> j = dict((a, i) for a in s for i, s in enumerate(l)) >> NameError: name ‘s’ is not defined Me hubiera gustado: >> j >> {1:0, 2:0, 3:0, 4: 1, 5: 1, 6: 1} Acabo de hacer […]

¿Es la variable local necesaria en las comprensiones de Python?

En Python 3.x, estoy llamando a una función rand_foo() que devuelve algunas cosas aleatorias cada vez que se llama. Deseo almacenar la secuencia de resultados aleatorios en una lista. Estoy usando la siguiente construcción: r = [ rand_foo() for i in range(10) ] Ahora mi IDE de PyCharm 3.0 sigue advirtiendo: Local variable ‘i’ value […]

Usando if, elif, else en List Comprehensions, Python

Creé la siguiente lista de comprensión en python: [int(a[0].internal_value).lower() if type(a[0].internal_value) in (str,unicode) and a[0].internal_value.isdigit() == True else str(a[0].internal_value).lower() if type(a[0].internal_value) in (str,unicode) else int(a[0].internal_value) if type(a[0].internal_value) in (float,int) for a in ws.iter_rows() if a[0].internal_value None] Tengo problemas tratando de construir el final, si la condición: else int(a[0].internal_value) if type(a[0].internal_value) in (float,int) Obtengo una syntax […]

¿Las variables definidas dentro de las comprensiones de la lista se filtran en el ámbito de cierre?

No puedo encontrar ningún lugar que defina este comportamiento: if [x for x in [0, 1, -1] if x > 0]: val = x ¿Qué tan seguro es este código? ¿Se asignará siempre val al último elemento de la lista si algún elemento de la lista es mayor que 0?

Tire de una subcadena específica de una línea en python

Tengo un archivo con muchas líneas formateadas como tales: DIV ID=0X78800009 EXT=”LOS ANGELES” TY=STANDARD OWN=0X74400002 ABBR=LA Necesito sacar el valor EXT, pero solo la parte entre comillas. Actualmente estoy usando esto: for line in file: if sub in line: extlist.append([item[4:] for item in line.split() if item.startswith(‘EXT=’)].pop()) Pero solo agrega la parte “LOS” de LOS ANGELES […]

iteración ternaria python con lista de comprensión

¿Es posible la iteración ternaria? Una versión simplista de lo que quiero decir, aunque este ejemplo en particular podría hacerse de una mejor manera: c = 0 list1 = [4, 6, 7, 3, 4, 5, 3, 4] c += 1 if 4 == i for i in list1 else 0 Un ejemplo más práctico: strList […]

Lista de comprensión y len () vs. simple para loop

Se supone que debo tomar una lista de palabras y contar todas las palabras que tienen 2 o más caracteres y donde el primero y el último son iguales. Se me ocurrieron dos soluciones posibles: result = 0 for word in words: if len(word) >= 2 and word[0] == word[-1]: result += 1 return result […]