Comment trouver les éléments communs dans deux listes Python

PythonBeginner
Pratiquer maintenant

Introduction

Les listes Python sont une structure de données fondamentale qui permet de stocker et d'organiser des collections de données. Trouver les éléments communs entre deux listes est une compétence pratique utile dans de nombreux scénarios de programmation, de l'analyse de données à la création d'applications web. Dans ce laboratoire pratique, vous apprendrez plusieurs techniques pour identifier les éléments partagés entre les listes Python et comprendre quand utiliser chaque approche.

À la fin de ce tutoriel, vous aurez une expérience pratique des fonctions et méthodes intégrées de Python pour la manipulation des listes, et vous serez capable de mettre en œuvre ces techniques dans vos propres projets.

Création et compréhension des listes Python

Commençons par créer quelques listes Python et explorer leurs opérations de base. Cela nous donnera les bases dont nous avons besoin avant de trouver les éléments communs.

Que sont les listes Python ?

En Python, une liste est une collection ordonnée d'éléments qui peut stocker des éléments de différents types de données. Les listes sont créées à l'aide de crochets [] avec des éléments séparés par des virgules.

Créons notre premier fichier Python et explorons les listes :

  1. Ouvrez le WebIDE et créez un nouveau fichier en cliquant sur "File" > "New File"
  2. Enregistrez le fichier sous le nom list_basics.py dans le répertoire /home/labex/project
  3. Ajoutez le code suivant au fichier :
## Creating basic lists
fruits = ["apple", "banana", "cherry", "orange", "kiwi"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]

## Printing the lists
print("Fruits list:", fruits)
print("Numbers list:", numbers)
print("Mixed list:", mixed)

## Accessing list elements using index
print("\nAccessing list elements:")
print("First fruit:", fruits[0])
print("Last number:", numbers[-1])

## Slicing lists
print("\nSlicing lists:")
print("First three fruits:", fruits[0:3])
print("Last two numbers:", numbers[-2:])

## List operations
print("\nList operations:")
print("Length of fruits list:", len(fruits))
fruits.append("mango")
print("After adding mango:", fruits)
fruits.remove("banana")
print("After removing banana:", fruits)

## Checking if an element exists in a list
print("\nChecking if elements exist:")
print("Is 'apple' in fruits?", "apple" in fruits)
print("Is 'grape' in fruits?", "grape" in fruits)
  1. Exécutez le fichier en ouvrant un terminal et en tapant :
cd ~/project
python3 list_basics.py

Vous devriez voir une sortie montrant les différentes opérations de liste que nous avons effectuées :

Fruits list: ['apple', 'banana', 'cherry', 'orange', 'kiwi']
Numbers list: [1, 2, 3, 4, 5]
Mixed list: [1, 'hello', 3.14, True]

Accessing list elements:
First fruit: apple
Last number: 5

Slicing lists:
First three fruits: ['apple', 'banana', 'cherry']
Last two numbers: [4, 5]

List operations:
Length of fruits list: 5
After adding mango: ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango']
After removing banana: ['apple', 'cherry', 'orange', 'kiwi', 'mango']

Checking if elements exist:
Is 'apple' in fruits? True
Is 'grape' in fruits? False

Maintenant que nous comprenons les bases des listes Python, nous pouvons nous préparer à trouver les éléments communs entre deux listes. Créons deux exemples de listes que nous utiliserons dans les prochaines étapes :

  1. Créez un nouveau fichier appelé common_elements_data.py avec le contenu suivant :
## Create two lists with some common elements
list1 = [1, 2, 3, 4, 5, 6]
list2 = [4, 5, 6, 7, 8, 9]

print("List 1:", list1)
print("List 2:", list2)
print("We'll find the common elements between these lists in the next steps.")
  1. Exécutez ce fichier :
python3 common_elements_data.py

Cela affichera nos deux listes que nous utiliserons dans les prochaines étapes pour trouver les éléments communs :

List 1: [1, 2, 3, 4, 5, 6]
List 2: [4, 5, 6, 7, 8, 9]
We'll find the common elements between these lists in the next steps.

Vous avez créé et exploré avec succès les listes Python. Dans l'étape suivante, nous apprendrons à trouver les éléments communs entre ces deux listes.

Trouver les éléments communs en utilisant différentes méthodes

Maintenant que nous avons nos deux listes, nous allons explorer plusieurs façons de trouver les éléments communs entre elles. Chaque méthode a ses avantages, et les comprendre toutes vous aidera à choisir l'approche la plus adaptée à vos besoins spécifiques.

Méthode 1 : Utilisation de la méthode de la boucle

L'approche la plus simple consiste à utiliser une boucle et l'opérateur in pour vérifier si chaque élément d'une liste est également présent dans l'autre.

  1. Créez un nouveau fichier appelé common_loop.py avec le contenu suivant :
## Import our lists from the previous file
from common_elements_data import list1, list2

## Find common elements using a loop
common_elements = []
for item in list1:
    if item in list2:
        common_elements.append(item)

print("Common elements using loop method:", common_elements)
  1. Exécutez le script :
python3 common_loop.py

Vous devriez voir :

Common elements using loop method: [4, 5, 6]

Cette méthode est simple à comprendre, mais peut être inefficace pour les grandes listes car l'opérateur in doit rechercher dans toute la seconde liste pour chaque élément de la première liste.

Méthode 2 : Utilisation des ensembles (Sets)

Une approche plus efficace exploite la structure de données set de Python, qui est optimisée pour les tests d'appartenance et la recherche d'éléments communs.

  1. Créez un nouveau fichier appelé common_sets.py avec le contenu suivant :
## Import our lists from the previous file
from common_elements_data import list1, list2

## Convert lists to sets and find intersection
set1 = set(list1)
set2 = set(list2)
common_elements = list(set1.intersection(set2))  ## Alternative: list(set1 & set2)

print("Common elements using set intersection:", common_elements)
  1. Exécutez le script :
python3 common_sets.py

Vous devriez voir :

Common elements using set intersection: [4, 5, 6]

La méthode des ensembles est généralement beaucoup plus rapide que la méthode de la boucle, en particulier pour les grandes listes. Cependant, notez que les ensembles ne conservent pas l'ordre original des éléments.

Méthode 3 : Utilisation de la compréhension de liste (List Comprehension)

La compréhension de liste fournit un moyen concis de créer des listes basées sur des listes existantes. Nous pouvons l'utiliser pour trouver des éléments communs en une seule ligne de code.

  1. Créez un nouveau fichier appelé common_comprehension.py avec le contenu suivant :
## Import our lists from the previous file
from common_elements_data import list1, list2

## Find common elements using list comprehension
common_elements = [item for item in list1 if item in list2]

print("Common elements using list comprehension:", common_elements)
  1. Exécutez le script :
python3 common_comprehension.py

Vous devriez voir :

Common elements using list comprehension: [4, 5, 6]

La compréhension de liste est plus concise que la méthode de la boucle et préserve l'ordre des éléments, mais elle a toujours les mêmes caractéristiques de performance que la méthode de la boucle.

Comparaison de toutes les méthodes

Créons un fichier qui compare les trois méthodes :

  1. Créez un nouveau fichier appelé compare_methods.py avec le contenu suivant :
## Import our lists from the previous file
from common_elements_data import list1, list2

## Method 1: Using a loop
common_loop = []
for item in list1:
    if item in list2:
        common_loop.append(item)

## Method 2: Using sets
common_sets = list(set(list1) & set(list2))

## Method 3: Using list comprehension
common_comprehension = [item for item in list1 if item in list2]

## Print results from all methods
print("Original lists:")
print("List 1:", list1)
print("List 2:", list2)
print("\nCommon elements using different methods:")
print("Loop method:", common_loop)
print("Set method:", common_sets)
print("List comprehension:", common_comprehension)
  1. Exécutez le script :
python3 compare_methods.py

Vous devriez voir :

Original lists:
List 1: [1, 2, 3, 4, 5, 6]
List 2: [4, 5, 6, 7, 8, 9]

Common elements using different methods:
Loop method: [4, 5, 6]
Set method: [4, 5, 6]
List comprehension: [4, 5, 6]

Les trois méthodes nous donnent le même résultat : les éléments communs entre list1 et list2 sont [4, 5, 6].

Vous avez maintenant appris trois façons différentes de trouver les éléments communs entre deux listes en Python. Dans l'étape suivante, nous allons explorer quelques applications pratiques de ces techniques.

Applications pratiques de la recherche d'éléments communs

Explorons quelques applications concrètes où la recherche d'éléments communs entre les listes est utile. Nous allons implémenter ces exemples en utilisant les méthodes que nous avons apprises à l'étape précédente.

Application 1 : Recherche d'intérêts communs

Imaginez que vous construisez une application de réseau social où vous souhaitez montrer aux utilisateurs qui partagent des intérêts communs. Simulez ce scénario :

  1. Créez un nouveau fichier appelé common_interests.py avec le contenu suivant :
## User interests data
user1_interests = ["programming", "music", "movies", "hiking", "cooking"]
user2_interests = ["music", "photography", "travel", "cooking", "gaming"]

print("User 1's interests:", user1_interests)
print("User 2's interests:", user2_interests)

## Find common interests using the set method (most efficient)
common_interests = list(set(user1_interests) & set(user2_interests))

print("\nCommon interests:", common_interests)
print("Number of common interests:", len(common_interests))

## Generate a friendly message based on common interests
if len(common_interests) > 0:
    message = f"You and this user both enjoy {' and '.join(common_interests)}!"
    print("\nSuggested connection message:")
    print(message)
else:
    print("\nNo common interests found.")
  1. Exécutez le script :
python3 common_interests.py

Vous devriez voir :

User 1's interests: ['programming', 'music', 'movies', 'hiking', 'cooking']
User 2's interests: ['music', 'photography', 'travel', 'cooking', 'gaming']

Common interests: ['music', 'cooking']
Number of common interests: 2

Suggested connection message:
You and this user both enjoy music and cooking!

Cet exemple montre comment la recherche d'éléments communs peut aider à créer des expériences utilisateur personnalisées dans les applications.

Application 2 : Comparaison des listes de courses

Imaginons un scénario où deux colocataires ont des listes de courses et veulent coordonner qui achète quoi. Ils veulent identifier les articles qui apparaissent sur les deux listes afin de pouvoir décider qui achètera ces articles.

  1. Créez un nouveau fichier appelé shopping_lists.py avec le contenu suivant :
## Shopping lists for two roommates
roommate1_list = ["milk", "eggs", "bread", "apples", "coffee", "chicken"]
roommate2_list = ["bananas", "coffee", "cereal", "eggs", "sugar", "bread"]

print("Roommate 1's shopping list:", roommate1_list)
print("Roommate 2's shopping list:", roommate2_list)

## Find duplicate items (appears in both lists)
duplicate_items = [item for item in roommate1_list if item in roommate2_list]

## Find unique items for each roommate
roommate1_unique = [item for item in roommate1_list if item not in roommate2_list]
roommate2_unique = [item for item in roommate2_list if item not in roommate1_list]

print("\nDuplicate items (both roommates planned to buy):", duplicate_items)
print("Unique items for Roommate 1:", roommate1_unique)
print("Unique items for Roommate 2:", roommate2_unique)

## Create a combined shopping list with no duplicates
combined_list = list(set(roommate1_list) | set(roommate2_list))
print("\nCombined shopping list (no duplicates):", combined_list)

## Calculate some statistics
total_items = len(combined_list)
duplicate_count = len(duplicate_items)
efficiency = (duplicate_count / total_items) * 100

print(f"\nShopping efficiency: By coordinating, you've reduced {duplicate_count} duplicate items out of {total_items} total items.")
print(f"This saved {efficiency:.1f}% of total shopping effort!")
  1. Exécutez le script :
python3 shopping_lists.py

Vous devriez voir :

Roommate 1's shopping list: ['milk', 'eggs', 'bread', 'apples', 'coffee', 'chicken']
Roommate 2's shopping list: ['bananas', 'coffee', 'cereal', 'eggs', 'sugar', 'bread']

Duplicate items (both roommates planned to buy): ['eggs', 'bread', 'coffee']
Unique items for Roommate 1: ['milk', 'apples', 'chicken']
Unique items for Roommate 2: ['bananas', 'cereal', 'sugar']

Combined shopping list (no duplicates): ['chicken', 'eggs', 'coffee', 'milk', 'bananas', 'cereal', 'bread', 'sugar', 'apples']

Shopping efficiency: By coordinating, you've reduced 3 duplicate items out of 9 total items.
This saved 33.3% of total shopping effort!

Application 3 : Analyse des inscriptions aux cours des étudiants

Créons un exemple plus complexe où nous analysons les inscriptions aux cours de différents étudiants.

  1. Créez un nouveau fichier appelé course_analysis.py avec le contenu suivant :
## Course enrollments for different students
student_courses = {
    "Alice": ["Math101", "Physics101", "ComputerScience101", "History101"],
    "Bob": ["Math101", "Chemistry101", "Biology101", "ComputerScience101"],
    "Charlie": ["Physics101", "ComputerScience101", "English101"],
    "Diana": ["Art101", "History101", "Philosophy101", "English101"]
}

## Print all student enrollments
print("Student Enrollments:")
for student, courses in student_courses.items():
    print(f"{student}: {courses}")

print("\n--- Course Analysis ---")

## Find courses that Alice and Bob have in common
alice_bob_common = list(set(student_courses["Alice"]) & set(student_courses["Bob"]))
print(f"\nCourses Alice and Bob have in common: {alice_bob_common}")

## Find a course that all students are taking (if any)
all_students_common = set(student_courses["Alice"])
for student in student_courses:
    all_students_common &= set(student_courses[student])

if all_students_common:
    print(f"All students are taking: {list(all_students_common)}")
else:
    print("There are no courses that all students are taking.")

## Find the most popular course(s)
all_courses = []
for courses in student_courses.values():
    all_courses.extend(courses)

course_counts = {}
for course in all_courses:
    if course in course_counts:
        course_counts[course] += 1
    else:
        course_counts[course] = 1

max_count = max(course_counts.values())
most_popular = [course for course, count in course_counts.items() if count == max_count]

print(f"\nMost popular course(s) with {max_count} students: {most_popular}")

## Find which students share the most courses with each other
max_common = 0
most_common_pair = ()

students = list(student_courses.keys())
for i in range(len(students)):
    for j in range(i+1, len(students)):
        student1 = students[i]
        student2 = students[j]
        common_courses = set(student_courses[student1]) & set(student_courses[student2])
        if len(common_courses) > max_common:
            max_common = len(common_courses)
            most_common_pair = (student1, student2)
            shared_courses = common_courses

print(f"\nStudents sharing the most courses: {most_common_pair[0]} and {most_common_pair[1]}")
print(f"They share {max_common} courses: {list(shared_courses)}")
  1. Exécutez le script :
python3 course_analysis.py

Vous devriez voir une sortie montrant l'analyse des cours, y compris les cours communs entre les étudiants et les cours les plus populaires.

Ces exemples démontrent comment la recherche d'éléments communs peut être appliquée pour résoudre divers problèmes du monde réel. La capacité à identifier les éléments qui se chevauchent dans différentes listes est une technique puissante pour l'analyse des données et la création d'applications centrées sur l'utilisateur.

Comparaison des performances et meilleures pratiques

Maintenant que nous comprenons les différentes méthodes pour trouver des éléments communs et que nous avons vu des applications pratiques, comparons les performances de ces méthodes et établissons quelques bonnes pratiques.

Mesurer les performances

Créons un script pour mesurer les performances des différentes méthodes pour trouver des éléments communs :

  1. Créez un nouveau fichier appelé performance_test.py avec le contenu suivant :
import time
import random

def measure_time(func, *args):
    """Measure the execution time of a function"""
    start_time = time.time()
    result = func(*args)
    end_time = time.time()
    return result, end_time - start_time

## Create large test lists with some overlap
def create_test_lists(size, overlap_percent):
    """Create two lists of the given size with specified overlap percentage"""
    overlap_size = int(size * overlap_percent / 100)

    ## Create list1 with random numbers
    list1 = random.sample(range(1, size * 10), size)

    ## Create list2 with some elements from list1 (overlap) and some new elements
    overlap_elements = random.sample(list1, overlap_size)
    remaining_size = size - overlap_size
    new_elements = random.sample([x for x in range(1, size * 10) if x not in list1], remaining_size)

    list2 = overlap_elements + new_elements
    random.shuffle(list2)

    return list1, list2

## Methods to find common elements
def using_loop(list1, list2):
    common = []
    for item in list1:
        if item in list2:
            common.append(item)
    return common

def using_sets(list1, list2):
    return list(set(list1) & set(list2))

def using_comprehension(list1, list2):
    return [item for item in list1 if item in list2]

## Test with different list sizes
sizes = [100, 1000, 10000]
overlap = 50  ## 50% overlap

print("Performance comparison for finding common elements:")
print("-" * 60)
print(f"{'Size':<10}{'Loop (s)':<15}{'Set (s)':<15}{'Comprehension (s)':<20}")
print("-" * 60)

for size in sizes:
    list1, list2 = create_test_lists(size, overlap)

    ## Measure time for each method
    _, loop_time = measure_time(using_loop, list1, list2)
    _, set_time = measure_time(using_sets, list1, list2)
    _, comp_time = measure_time(using_comprehension, list1, list2)

    print(f"{size:<10}{loop_time:<15.6f}{set_time:<15.6f}{comp_time:<20.6f}")
  1. Exécutez le script :
python3 performance_test.py

Vous devriez voir une comparaison des performances entre les trois méthodes, avec les temps d'exécution pour différentes tailles de listes. La sortie ressemblera à ceci (les temps réels varieront) :

Performance comparison for finding common elements:
------------------------------------------------------------
Size      Loop (s)       Set (s)        Comprehension (s)
------------------------------------------------------------
100       0.000134       0.000050       0.000117
1000      0.008561       0.000247       0.009018
10000     0.910376       0.001944       0.915267

Bonnes pratiques

En se basant sur ce que nous avons appris, créons un fichier avec les meilleures pratiques pour trouver des éléments communs dans les listes Python :

  1. Créez un nouveau fichier appelé best_practices.py avec le contenu suivant :
"""
Best Practices for Finding Common Elements in Python Lists

This file demonstrates recommended approaches for different scenarios
when finding common elements between lists.
"""

## Sample lists for demonstration
small_list1 = [1, 2, 3, 4, 5]
small_list2 = [4, 5, 6, 7, 8]

large_list1 = list(range(1, 10001))
large_list2 = list(range(5001, 15001))

print("Best Practices for Finding Common Elements in Python Lists")
print("=" * 60)

print("\n1. For small lists (less than ~100 elements):")
print("   Any method works well, but set intersection is still recommended for clarity:")
common_small = list(set(small_list1) & set(small_list2))
print(f"   Common elements: {common_small}")

print("\n2. For large lists (100+ elements):")
print("   Always use set intersection for performance:")
## Using set method for large lists
start_time = __import__('time').time()
common_large = list(set(large_list1) & set(large_list2))
end_time = __import__('time').time()
print(f"   Found {len(common_large)} common elements in {end_time - start_time:.6f} seconds")

print("\n3. When order matters:")
print("   Use list comprehension with a set for lookup efficiency:")
lookup_set = set(small_list2)  ## Convert the second list to a set for O(1) lookups
ordered_common = [item for item in small_list1 if item in lookup_set]
print(f"   Common elements (preserving order from list1): {ordered_common}")

print("\n4. When dealing with duplicates:")
print("   Standard set intersection removes duplicates. If you need to keep them:")
list1_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
list2_with_duplicates = [2, 2, 4, 5, 5, 6]
print(f"   List 1 with duplicates: {list1_with_duplicates}")
print(f"   List 2 with duplicates: {list2_with_duplicates}")

## Method that preserves duplicates
def find_common_with_duplicates(list1, list2):
    result = []
    list2_copy = list2.copy()  ## Create a copy to modify

    for item in list1:
        if item in list2_copy:
            result.append(item)
            list2_copy.remove(item)  ## Remove to avoid matching the same item again

    return result

common_with_duplicates = find_common_with_duplicates(list1_with_duplicates, list2_with_duplicates)
print(f"   Common elements (preserving duplicates): {common_with_duplicates}")

print("\nSummary:")
print("1. For most cases: Use set intersection -> list(set(list1) & set(list2))")
print("2. When order matters: Convert smaller list to set, use list comprehension on larger list")
print("3. When duplicates matter: Use custom functions that check and remove matched elements")
print("4. Always consider the specific requirements of your use case")
  1. Exécutez le script :
python3 best_practices.py

Cela affichera un guide complet des meilleures pratiques pour trouver des éléments communs dans différents scénarios.

Créer un module utilitaire

Enfin, créons un module utilitaire réutilisable que nous pourrons importer dans de futurs projets :

  1. Créez un nouveau fichier appelé list_utils.py avec le contenu suivant :
"""
List Utilities Module

A collection of functions for working with lists, including finding common elements.
"""

def find_common_elements(list1, list2, method='set', preserve_order=False, preserve_duplicates=False):
    """
    Find common elements between two lists.

    Parameters:
        list1 (list): First list
        list2 (list): Second list
        method (str): Method to use ('set', 'loop', or 'comprehension')
        preserve_order (bool): Whether to preserve the order of items from list1
        preserve_duplicates (bool): Whether to preserve duplicate common elements

    Returns:
        list: List of common elements
    """
    ## Handle the case with duplicates
    if preserve_duplicates:
        result = []
        list2_copy = list2.copy()

        for item in list1:
            if item in list2_copy:
                result.append(item)
                list2_copy.remove(item)

        return result

    ## When order matters but duplicates don't
    if preserve_order and not preserve_duplicates:
        lookup_set = set(list2)
        return [item for item in list1 if item in lookup_set]

    ## When neither order nor duplicates matter
    if method == 'set':
        return list(set(list1) & set(list2))
    elif method == 'loop':
        common = []
        for item in list1:
            if item in list2 and item not in common:
                common.append(item)
        return common
    elif method == 'comprehension':
        seen = set()
        return [item for item in list1 if item in list2 and not (item in seen or seen.add(item))]
    else:
        raise ValueError("Method must be 'set', 'loop', or 'comprehension'")

def list_difference(list1, list2):
    """
    Find elements in list1 that are not in list2.

    Parameters:
        list1 (list): First list
        list2 (list): Second list

    Returns:
        list: Elements in list1 but not in list2
    """
    return list(set(list1) - set(list2))

def list_union(list1, list2):
    """
    Find all unique elements from both lists combined.

    Parameters:
        list1 (list): First list
        list2 (list): Second list

    Returns:
        list: All unique elements from both lists
    """
    return list(set(list1) | set(list2))

## Usage examples
if __name__ == "__main__":
    ## Sample lists
    list1 = [1, 2, 3, 4, 5, 5]
    list2 = [4, 5, 5, 6, 7]

    print("Original lists:")
    print(f"List 1: {list1}")
    print(f"List 2: {list2}")

    print("\nCommon elements (using different methods):")
    print(f"Set method: {find_common_elements(list1, list2, method='set')}")
    print(f"Loop method: {find_common_elements(list1, list2, method='loop')}")
    print(f"Comprehension method: {find_common_elements(list1, list2, method='comprehension')}")

    print("\nWith order and duplicates preserved:")
    print(f"Preserving order: {find_common_elements(list1, list2, preserve_order=True)}")
    print(f"Preserving duplicates: {find_common_elements(list1, list2, preserve_duplicates=True)}")

    print("\nOther list operations:")
    print(f"Elements in list1 but not in list2: {list_difference(list1, list2)}")
    print(f"Elements in list2 but not in list1: {list_difference(list2, list1)}")
    print(f"All unique elements from both lists: {list_union(list1, list2)}")
  1. Exécutez le script pour voir le module utilitaire en action :
python3 list_utils.py
  1. Testons maintenant notre module utilitaire en l'important dans un nouveau script. Créez un fichier appelé test_utils.py :
## Import our utility functions
from list_utils import find_common_elements, list_difference, list_union

## Creating some test data
fruits1 = ["apple", "banana", "cherry", "date", "banana"]
fruits2 = ["banana", "cherry", "fig", "grape", "banana"]

print("Fruits List 1:", fruits1)
print("Fruits List 2:", fruits2)

## Find common elements with different options
common_default = find_common_elements(fruits1, fruits2)
common_order = find_common_elements(fruits1, fruits2, preserve_order=True)
common_duplicates = find_common_elements(fruits1, fruits2, preserve_duplicates=True)

print("\nCommon fruits (default):", common_default)
print("Common fruits (preserving order):", common_order)
print("Common fruits (preserving duplicates):", common_duplicates)

## Find differences between lists
only_in_fruits1 = list_difference(fruits1, fruits2)
only_in_fruits2 = list_difference(fruits2, fruits1)

print("\nFruits only in list 1:", only_in_fruits1)
print("Fruits only in list 2:", only_in_fruits2)

## Find union of lists
all_unique_fruits = list_union(fruits1, fruits2)
print("\nAll unique fruits from both lists:", all_unique_fruits)
  1. Exécutez le script de test :
python3 test_utils.py

Vous devriez voir une sortie démontrant nos fonctions utilitaires avec diverses options.

En terminant cette étape, vous avez non seulement appris les implications de performance des différentes méthodes, mais vous avez également créé un module utilitaire réutilisable que vous pouvez incorporer dans de futurs projets Python.

Résumé

Dans ce lab, vous avez appris diverses techniques pour trouver des éléments communs entre deux listes Python. Vous avez exploré :

  1. Différentes méthodes pour trouver des éléments communs :

    • Utilisation de boucles et de l'opérateur in
    • Utilisation de la structure de données set de Python et des opérations d'intersection
    • Utilisation de la compréhension de liste (list comprehension)
  2. Applications pratiques où la recherche d'éléments communs est utile :

    • Réseaux sociaux (recherche d'intérêts communs)
    • Coordination des listes de courses
    • Analyse des inscriptions aux cours
  3. Considérations de performance et bonnes pratiques :

    • Les méthodes basées sur les sets sont généralement les plus efficaces pour les grandes listes
    • Quand préserver l'ordre ou les doublons en fonction de vos exigences
    • Comment créer des fonctions utilitaires réutilisables pour les opérations sur les listes

Ces compétences vous permettront d'écrire du code Python plus efficace et de résoudre des problèmes du monde réel impliquant la comparaison et l'analyse de données. Vous pouvez désormais manipuler en toute confiance les listes dans vos applications Python et choisir la méthode appropriée pour trouver des éléments communs en fonction de vos besoins spécifiques.