Provare a scrivere una funzione for che prende due stringhe e restituisce i caratteri che si intersecano nell'ordine in cui appaiono nella prima stringa.Python - Stringhe di intersecazione
Ecco cosa ho provato:
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'
però voglio solo i personaggi di intersezione di apparire una volta e in ordine di prima stringa es. 'asd'
Qualcuno può aiutare?
ho trovato alcuni problemi simili su altri forum ma le soluzioni sembrano tutte a coinvolgere le liste, mentre mi piacerebbe la mia uscita di essere una stringa
Grazie! È certamente più facile da capire. Ora mi rendo conto che l'ho complicato cercando di usare '' join() – bang
''.' .join' è idiomatico e non è affatto complicato. Usarlo in un ciclo, tuttavia, manca il punto. In realtà, il ciclo for nel codice OP è completamente inutile; semplicemente fa sì che il vero lavoro - 'str3 = str3.join (io per i in str1 se io in str2 non in str3)' sia eseguito più volte, con lo stesso risultato ogni volta, e il risultato sia gettato via ogni volta ma l'ultimo. –
Non si può realmente riscrivere questo particolare algoritmo per essere una lista di comprensione - almeno non senza invocare alcune cose non documentate molto discutibili - perché il passo di filtraggio 'c in s2 e c non in out' dipende dai risultati parziali fino a questo punto , che non sono resi accessibili (eccetto che per cose non documentate molto dubbie). –