Intentando escribir una función para dos cadenas y devuelve los caracteres que se cruzan en el orden en que aparecen en la primera cadena.Python - Intersección de cadenas
Esto es lo que he intentado:
def strIntersection(str1, str2):
for i in str1:
str3 = ''
str3 = str3.join(i for i in str1 if i in str2 not in str3)
return str3
str1 = 'asdfasdfasfd'
str2 = 'qazwsxedc'
strIntersection(str1,str2)
=> 'asdasdasd'
sin embargo que sólo quieren que los personajes que aparezcan intersección de una vez con el fin de la primera cadena es decir. 'asd'
¿Alguien puede ayudar?
que he encontrado algunos problemas similares en otros foros, pero las soluciones todos parecen implicar listas mientras que Me gustaría que mi salida sea una cadena
Gracias! Ciertamente es más fácil de entender. Me doy cuenta ahora que lo estaba complicando al tratar de usar '' join() – bang
''' .join' es idiomático y nada complicado. Sin embargo, usarlo en un bucle, pasa por alto el punto. En realidad, el for-loop en el código OP es completamente inútil; simplemente causa el trabajo real - 'str3 = str3.join (i para i en str1 si yo en str2 no en str3)' para realizarse múltiples veces, con el mismo resultado cada vez, y el resultado se descarta cada vez pero el último. –
No se puede reescribir este algoritmo en particular para que sea una lista comprensiva, al menos no sin invocar algunas cosas indocumentadas muy dudosas, porque el paso de filtrado 'c en s2 yc no en out' depende de los resultados parciales hasta este punto , que no son accesibles (excepto a través de cosas indocumentadas muy dudosas). –