Am besten konvertieren Sie Ihre 12K-Liste in eine festgelegte Datenstruktur. Dann können Sie über die Volkszählungsdaten iterieren und prüfen, ob jeder in der Menge ist.
# O(n) where n is the length of the surname_list
surname_set = set(surname_list)
for name in census:
# This is now O(1) operation
if name in surname_set:
do whatever...
ist dies mit ziemlicher Sicherheit der schnellste Weg, was Sie in Python oder einer beliebigen Sprache, und sollte recht schnell sein auf einer 200K Größe Liste müssen zu erreichen.
Wai Leong Yeow schlägt eine binäre Suche vor, die schneller ist, als die Liste direkt zu überprüfen, aber das ist immer noch eine Operation O (log n) auf 200K verschiedenen Namen, wobei N 12.000 ist, was bedeutet, dass es wahrscheinlich mehr ist als 10x langsamer nur für den iterativen Teil (Dies ist eine Vereinfachung - in der Realität gibt es einige konstante Faktoren maskiert durch die große O-Notation, aber die Konstanten-Zeit-Lösung ist sicherlich noch schneller). Die Sortierung dauert O (n log n), wobei die Umwandlung in eine Menge O (n) dauert, was bedeutet, dass diese Methode auch schneller vorverarbeitet wird.
Machen Sie ein '' 'Set''' aus Ihrer Liste der Nachnamen dann [auf Mitgliedschaft testen] (https://docs.python.org/3/reference/expressions.html#membership-test-operations) – wwii
Es ist sozial voreingenommen, um Namen zu denken -> Rennen und sogar die Motivation Rasse Klassifizierung selbst ist eher störend: https://techcrunch.com/2015/08/02/machine-learning-and-human-bias-an-uneasy-pair/ und http://www.fatml.org/cfp.html – alvas
OP wird auch einige mehrdeutige Klassifikationen mit Namen wie Lee oder Long haben. Nicht-Asiaten können diese Namen auch haben. –