Quiero comparar 2 iterables e imprimir los elementos que aparecen en ambos iterables.
>>> a = ('q', 'r')
>>> b = ('q')
# Iterate over a. If y not in b, print y.
# I want to see ['r'] printed.
>>> print([ y if y not in b for y in a])
^
Pero me da un error de sintaxis no válido donde ^se ha colocado. ¿Qué tiene de malo esta función lamba?
python
if-statement
list-comprehension
OrangeTux
fuente
fuente

b = ('q')tampoco crean una tupla. Las tuplas con un elemento necesitan un elemento explícito,, es decirb = ('q',)tuplesaiterables.Respuestas:
Te equivocaste en el pedido. El
ifdebería haber después de lafor(a menos que sea en unif-elseoperador ternario)Sin embargo, esto funcionaría:
fuente
Pones el
ifal final:Las listas por comprensión se escriben en el mismo orden que sus contrapartes anidadas de especificación completa, esencialmente la declaración anterior se traduce en:
Su versión intentó hacer esto en su lugar:
pero la comprensión de una lista debe comenzar con al menos un bucle externo.
fuente
lista de fórmula de comprensión:
así puedes hacerlo así:
Solo para fines de demostración: [y si y no en b, de lo contrario, es falso para y en a]
fuente
elsecomprensión en una lista, al menos no donde se pone una. No confunda una comprensión de lista (filtrado) con una expresión condicional (que debe tener un valor, por lo que la expresión else es obligatoria).elseutilizarse en la comprensión de listas, como se muestra en el código.Esta no es una función lambda. Es una lista de comprensión.
Simplemente cambie el orden:
fuente
Investigué y probé las sugerencias mencionadas anteriormente de comprensión de listas para mi situación, como se describe a continuación, sin embargo, no funcionó. ¿Qué estoy haciendo mal aquí?
No está filtrando las palabras.
fuente