Manchmal wollte ich zwei Listen mit Zeichenfolgen als Elemente vergleichen und die gemeinsamen Elemente als Liste abrufen. Nun, ich kann es schaffen, aber ich habe mich gefragt, wie ich es selbst machen soll und habe darüber nachgedacht.
Angenommen, Sie haben zwei Listen wie diese, tag_list und src_list, und Sie möchten allgemeine Elemente als Liste abrufen.
tag_list=['igarashi', 'kubo', 'iguchi']
src_list=['taniguchi', 'matsushita', 'koyama', 'asama',
'marui', 'igarashi', 'kubo', 'kondo']
tag_list besteht aus drei Elementen.
igarashi
und kubo
befinden sich ebenfalls in src_list, aber da es kein iguchi
gibt, ist der erwartete Wert['igarashi', 'kubo']
.
matched_list = []
for tag in tag_list:
for src in src_list:
if tag == src:
matched_list.append(tag)
Das erste, was mir in den Sinn kam, war natürlich dies. Es ist leicht zu verstehen, aber die Vertiefung ist tief und leicht.
matched_list = []
for tag in tag_list:
matched_list+=filter(lambda str: str == tag, src_list)
Ich wollte die Listenmanipulationsfunktionen filter (), map () und redu () verwenden, also habe ich mein Bestes versucht. Ist es intuitiv für moderne Menschen, die an Sprachen mit zahlreichen Funktionen zur Manipulation von Arrays gewöhnt sind?
src_set = set(src_list)
tag_set = set(tag_list)
matched_list = list(src_set & tag_set)
Als ich googelte, kam plötzlich so etwas heraus. Es ist in gewisser Weise intuitiv. Ist es der Punkt, dass der Aggregattyp keine Reihenfolge hat? Ich habe gelernt, dass es in solchen Fällen verwendet werden kann.
Ist es leicht zu verstehen, lesbar, erfrischend, pythonartig und hat Vor- und Nachteile? Ich dachte. Mehr und mehr! Gibt es eine Möglichkeit, es zu schreiben? Gibt es auch einen Unterschied in der Verarbeitungsgeschwindigkeit? Ich war auch besorgt. Nächstes Mal werde ich große Beispieldaten erstellen und messen.
cmp_list.py https://github.com/yamao2253/qiita
Recommended Posts