Was ist der schnellste Weg, um zu überprüfen, ob eine Zeichenfolge einige Zeichen aus beliebigen Elementen einer Liste enthält?
Momentan verwende ich diese Methode:
%Vor%Gibt es einen Weg, es ohne Iteration zu machen (was es schneller machen wird, nehme ich an.)?
Sie können das Listenverständnis mit der Mitgliedschaftsprüfung testen
%Vor% Verglichen mit Ihrer Implementierung, obwohl LC eine implizite Schleife hat, aber schneller ist, da es keinen expliziten Funktionsaufruf wie in Ihrem Fall mit count
Im Vergleich zur Implementierung von Joe ist Ihre Methode viel schneller, da die Filterfunktion zwei Funktionen in einer Schleife aufrufen müsste: lambda
und count
Jamies kommentierte Lösung ist für kürzere Saiten langsamer. Hier ist das Testergebnis
%Vor%Wenn Sie boolesche Werte benötigen, ändern Sie für kürzere Strings einfach den obigen LC-Ausdruck
%Vor%Oder für längere Strings können Sie Folgendes tun
%Vor%oder
%Vor%Wenn bei dem Test festgestellt werden soll, ob Zeichen gemeinsam sind (keine Wörter oder Segmente), erstellen Sie ein Set aus den Buchstaben in der Liste und überprüfen Sie dann die Buchstaben gegen die Zeichenfolge:
%Vor%Aber ich gehe davon aus, dass Sie nur ein gemeinsames Zeichen suchen ...
Die Bibliothek esmre macht's möglich. In deinem Fall ist das einfachere esm (Teil von esmre) was du willst.
Sie haben eine gute Dokumentation und Beispiele: Aus ihren Beispielen genommen:
%Vor%Ich habe einige Leistungstests durchgeführt:
%Vor%Und das Ergebnis hängt hauptsächlich von der Anzahl der Elemente ab, nach denen man sucht (in meinem Fall "N"):
%Vor%Tags und Links python performance list iteration