Comment comparer des listes et récupérer des éléments communs dans une liste

Parfois, je voulais comparer deux listes avec des chaînes comme éléments et récupérer les éléments communs sous forme de liste. Eh bien, je peux le faire, mais je me suis demandé comment le faire moi-même et j'ai réfléchi.

Par exemple

Supposons que vous ayez deux listes comme celle-ci, tag_list et src_list, et que vous souhaitiez récupérer les éléments communs sous forme de liste.

tag_list=['igarashi', 'kubo', 'iguchi']
src_list=['taniguchi', 'matsushita', 'koyama', 'asama', 
          'marui', 'igarashi', 'kubo', 'kondo']

tag_list comporte trois éléments. ʻIgarashi et kubo sont également dans src_list, mais comme il n'y a pas de ʻiguchi, la valeur attendue est['igarashi', 'kubo'].

1. Tournez chaque liste avec une instruction for pour extraire et comparer des éléments

matched_list = []
for tag in tag_list:
    for src in src_list:
        if tag == src:
            matched_list.append(tag)

La première chose qui m'est venue à l'esprit était, bien sûr, ceci. C'est facile à comprendre, mais l'indentation est profonde et légère.

2. Une liste est une instruction for et l'autre est une fonction de filtre pour récupérer et comparer des éléments.

matched_list = []
for tag in tag_list:
    matched_list+=filter(lambda str: str == tag, src_list)

Je voulais utiliser les fonctions de manipulation de liste, filter (), map (), reduction (), alors j'ai fait de mon mieux. Est-ce intuitif pour les gens modernes qui sont habitués aux langages avec de nombreuses fonctions de manipulation de tableaux?

3. Convertissez la liste pour définir et prenez le produit logique. Convertir le résultat en liste

src_set = set(src_list)
tag_set = set(tag_list)
matched_list = list(src_set & tag_set)

Quand j'ai cherché sur Google, quelque chose comme ça est soudainement sorti. C'est intuitif d'une certaine manière. Est-ce le fait que le type d'agrégat n'a pas d'ordre? J'ai appris qu'il peut être utilisé dans de tels cas.


Alors au final, comment est-il préférable d'écrire?

Est-il facile à comprendre, lisible, rafraîchissant, semblable à Python et présente des avantages et des inconvénients? J'ai pensé. De plus en plus! Y a-t-il un moyen de l'écrire? Y a-t-il également une différence de vitesse de traitement? J'étais également inquiet. La prochaine fois, je vais créer un grand échantillon de données et le mesurer.


Source de l'échantillon

cmp_list.py https://github.com/yamao2253/qiita

Recommended Posts

Comment comparer des listes et récupérer des éléments communs dans une liste
[python] Résumé de la récupération des listes et des éléments du dictionnaire
Comment effacer un taple dans une liste (Python)
Comment supprimer les éléments en double dans la liste Python 3
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
[Python] Comment trier un dict dans une liste et une instance dans une liste
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Comment créer une trame de données et jouer avec des éléments avec des pandas
[Python] Comment supprimer des lignes et des colonnes dans une table (liste des options de méthode de dépôt)
Comment obtenir une liste excluant les éléments dont l'index est i ...?
Comment supprimer plusieurs positions (index) spécifiées dans une liste Python
Comment diviser et enregistrer un DataFrame
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Comment obtenir stacktrace en python
Comment utiliser is et == en Python
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
Je souhaite trier une liste dans l'ordre des autres listes
Comment mettre un espace demi-largeur avant les lettres et les chiffres en Python.
Comment rendre le nom du conteneur accessible dans Docker en tant que sous-domaine
Comment bien formater une liste de dictionnaires (ou d'instances) en Python
Comment arrêter le programme jusqu'à une date et une heure spécifiques en python
[Python] Comment créer une liste de types de dictionnaire, ajouter / modifier / supprimer des éléments et extraire avec une instruction for
Recevoir et traiter n objets dans une liste
Comment générer une séquence en Python et C ++
Comment créer un fichier JSON en Python
Réécrire des éléments dans une boucle de listes (Python)
Comment implémenter un sélecteur de dégradé dans Houdini
Obtenir uniquement les éléments de sous-classe dans une liste
Comment notifier les canaux Discord en Python
[Python] Comment dessiner un histogramme avec Matplotlib
Comment créer une API Rest dans Django
Trier les éléments de la liste dans l'ordre spécifié en Python
Comment écrire un document tuple nommé en 2020
Comment compter les nombres dans une plage spécifique
Comment lire des fichiers dans différents répertoires
Comment se moquer d'une fonction publique dans Pytest
[Python] Manipulation d'éléments dans une liste (tableau) [Trier]
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment réaliser quelque chose comme une liste de void * (ou de type de variante) dans Go?
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
[Pandas] Comment vérifier les doublons dans un tableau et supprimer les doublons (équivalent à supprimer les doublons dans Excel)
Comment obtenir une liste de fichiers dans le même répertoire avec python
Comment spécifier un schéma dans les paramètres de la base de données Django
Comment récupérer la nième plus grande valeur en Python
Comment convertir / restaurer une chaîne avec [] en python
Comment définir Decorator et Decomaker avec une seule fonction
Différences de comportement entre les opérateurs append () et "+ =" lors de l'ajout de données à une liste en Python
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment lister les fichiers dans le répertoire spécifié (plusieurs conditions / recherche de sous-répertoire)
[GCF + Python] Comment importer Excel vers GCS et créer une nouvelle table dans BigQuery
[Python] Comment développer des variables dans une chaîne de caractères
Comment écrire un type liste / dictionnaire de Python3
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Choses à noter lors de l'initialisation d'une liste en Python