Archives Wild Code School
Python

Listes

Quête 41 sur 66 · 1 image archivée

Vous pouvez construire une liste en plaçant n'importe quel nombre d'éléments entre crochets [], séparés par des virgules. Cela vous permet de créer des listes pouvant contenir différents types d'éléments, comme des chaînes de caractères, des nombres, ou même d'autres listes. Par exemple :

python
employee_counts = ['Finance', 12, 'Marketing', 23, 'Sales', 34]

Dans cet exemple, la liste employee_counts contient un mélange de chaînes de caractères et d'entiers, représentant les noms des services et leur nombre d'employés respectif.

De plus, vous pouvez créer une liste de listes en imbriquant des crochets. Cela peut être utile pour représenter des structures de données plus complexes. Par exemple :

python
department_budgets = [
    ['Marketing', 50000, 45000, 52000],
    ['Sales', 70000, 68000, 71000],
    ['HR', 30000, 32000, 31000]
    ]

Dans ce cas, department_budgets est une liste où chaque élément est lui-même une liste contenant le nom d'un service et son budget pour différents trimestres.

Pour combiner deux listes, vous pouvez utiliser l'opérateur +, qui concatènera les éléments des deux listes en une nouvelle liste. Par exemple :

python
quarter1_expenses = [30000, 40000, 35000]
quarter2_expenses = [32000, 42000, 36000]
combined_expenses = quarter1_expenses + quarter2_expenses

print(combined_expenses)
# Output: [30000, 40000, 35000, 32000, 42000, 36000]

Exercice

Créez un nouveau notebook Jupyter dans le dossier exercises du dossier Lists. Nommez-le favorite_Books_List.ipynb. Suivez ces étapes :

  1. Créer une liste : Créez une liste nommée favorite_books contenant les titres de vos cinq livres préférés.
  2. Afficher la liste : Affichez le contenu de la liste favorite_books.
  3. Créer une liste imbriquée : Créez une liste imbriquée nommée favorite_books_details où chaque sous-liste contient le titre, l'auteur et l'année de publication de chaque livre.
  4. Afficher la liste imbriquée : Affichez le contenu de la liste favorite_books_details.

Voici un exemple de code pour commencer. Vous pouvez le copier dans une cellule de code vide du notebook Jupyter.

Les ... dans l'exemple de code sont des espaces réservés. Remplacez-les par votre code.

python
# Creating a list of favorite books
favorite_books = ...

# Printing the list
print(...)

# Creating a nested list with book details
favorite_books_details = [
    [...],
    [...],
    [...],
    [...],
    [...]
]

# Printing the nested list
print(...)

Solution

Voir la solution
python
# Creating a list of favorite books
favorite_books = [
    "The Hobbit",
    "Dune",
    "The Catcher in the Rye",
    "Brave New World",
    "The Chronicles of Narnia"
]

# Printing the list
print("Favorite Books:")
print(favorite_books)

# Creating a nested list with book details
favorite_books_details = [
    ["The Hobbit", "J.R.R. Tolkien", 1937],
    ["Dune", "Frank Herbert", 1965],
    ["The Catcher in the Rye", "J.D. Salinger", 1951],
    ["Brave New World", "Aldous Huxley", 1932],
    ["The Chronicles of Narnia", "C.S. Lewis", 1950]
]

# Printing the nested list directly
print("\nFavorite Books Details:")
print(favorite_books_details)

Indexation des listes

Tout comme les chaînes de caractères, les listes peuvent être indexées (sous-scriptées), ce qui signifie que vous pouvez accéder à l'élément de votre choix dans la liste par sa position.

Positive
Negative
'a'
-5
-4
'b'
-3
'c'
-2
'd'
-1
'e'
'a'
0
1
'b'
2
'c'
3
'd'
4
'e'
Python Indexing
a_list = ['a','b','c', 'd', 'e']

Comme le montre la figure ci-dessus, le premier élément d'une liste est indexé à 0, le deuxième à 1, et ainsi de suite. C'est ce qu'on appelle l'indexation positive. Pour accéder à l'élément de la liste à la position 0, vous pouvez utiliser la syntaxe suivante :

python
element = list_name[0]

Par exemple, si vous avez une liste nommée a_list, vous pouvez accéder à son premier élément comme ceci :

python
a_list = ['a', 'b', 'c', 'd', 'e']
first_element = a_list[0]  # Output: 'a'
print(first_element)

Python prend également en charge l'indexation négative, qui vous permet d'accéder aux éléments depuis la fin de la liste. Les indices négatifs commencent par la droite : le dernier élément est indexé à -1, l'avant-dernier à -2, et ainsi de suite.

python
# Accessing elements with negative indexing
print(a_list[-1]) # Output: 'e'
print(a_list[-3]) # Output: 'c'

Considérons une liste imbriquée qui représente la structure organisationnelle d'une entreprise, avec ses départements et leurs subdivisions :

python
company_structure = [
    ['Marketing', 'Social Media', 'Content Creation', 'SEO'],
    ['Sales', 'B2B', 'B2C', 'Account Management'],
    ['Finance', 'Accounting', 'Budgeting', 'Payroll']
]

Vous pouvez accéder à des éléments spécifiques en utilisant l'indexation, par exemple :

python
print(company_structure[0][1])  # Output: 'Social Media'
print(company_structure[2][3])  # Output: 'Payroll'

Pour obtenir 'Social Media', nous utilisons company_structure[0][1]. Le premier index 0 accède à la première liste interne, et le second index 1 accède au deuxième élément de cette liste interne. Vous devez utiliser plusieurs indices.

Exercice

Dans le notebook Jupyter favorite_Books_List.ipynb, poursuivez votre pratique de l'indexation des listes en suivant ces étapes :

  1. Accédez et affichez le titre de votre troisième livre préféré de la liste favorite_books.
  2. Accédez et affichez l'auteur et l'année de publication de votre troisième livre préféré de la liste favorite_books_details.

Solution

Voir la solution
python
# Access and print the title of the third favorite book
third_book_title = favorite_books[2]  # Indexing starts at 0, so 2 is the third item
print("\nTitle of the third favorite book:")
print(third_book_title)

# Access and print the author and publication year of the third favorite book
third_book_details = favorite_books_details[2]  # Indexing starts at 0, so 2 is the third item
third_book_author = third_book_details[1]  # The author is the second element in the nested list
third_book_year = third_book_details[2]  # The publication year is the third element in the nested list

print("\nAuthor and publication year of the third favorite book:")
print(f"Author: {third_book_author}")
print(f"Publication Year: {third_book_year}")


Découpage des listes

Tout comme les chaînes de caractères, les listes peuvent également être découpées. Le découpage d'une liste vous permet d'obtenir une sous-liste :

python
a_list = ['a', 'b', 'c', 'd', 'e']
print(a_list[0:3])  # items from position 0 (included) to 3 (excluded)
# output: ['a', 'b', 'c']

print(a_list[:3])  # items from the start to position 3 (excluded)
# output: ['a', 'b', 'c']

print(a_list[2:])  # items from position 2 (included) to the end
# output: ['c', 'd', 'e']

De plus, vous pouvez spécifier un pas pour sauter des éléments :

python
# Using step in slicing
# Slicing with a step of 2, starting from the beginning to the end
print(a_list[::2])   # Output: ['a', 'c', 'e']

# Slicing with a step of 2, starting from the second element to the end
print(a_list[1::2])  # Output: ['b', 'd']

# Slicing with a step of 2, from the second to the fifth element
print(a_list[1:5:2]) # Output: ['b', 'd']

Exercice

Chiffre d'affaires annuel

Créez un nouveau notebook Jupyter dans le dossier exercices du dossier Lists. Nommez-le Annual_Revenue.ipynb. Après avoir terminé les exercices, n'oubliez pas de sauvegarder le notebook pour conserver votre progression.

Création d'une liste

En tant que responsable financier, créez une liste nommée annual_revenue pour stocker les chiffres d'affaires annuels des cinq dernières années. Assurez-vous que les chiffres sont présentés par ordre chronologique. Par exemple, la liste pourrait représenter les valeurs suivantes pour chaque année : 45, 50, 55, 60, et 65.

Indexation d'une liste

Accédez au chiffre d'affaires de la troisième année dans la liste et affichez-le. Cela affichera le chiffre d'affaires collecté pour cette année spécifique.

Découpage de liste

Extrayez et affichez les chiffres d'affaires des trois premières années pour examiner l'évolution du chiffre d'affaires dans le temps.

Solution

Voir la solution

Création d'une liste

python
# Creating a list with annual revenue figures for the past five years
annual_revenue = [45, 50, 55, 60, 65]

Voir la solution

Indexation d'une liste

python
# Accessing the revenue figure for the third year
third_year_revenue = annual_revenue[2]  # Indexing starts at 0, so 2 is the third item

# Printing the revenue figure for the third year
print("\nRevenue for the third year:")
print(third_year_revenue)


Voir la solution

Découpage de liste

python
# Extracting and printing the revenue figures for the first three years
first_three_years_revenue = annual_revenue[:3]  # Slicing to get the first three items

print("\nRevenue figures for the first three years:")
print(first_three_years_revenue)


Les listes sont des structures de données mutables, ce qui signifie que nous pouvons modifier, ajouter et supprimer des éléments dans une liste après sa création. La figure ci-dessous montre certaines des méthodes (actions) que vous pouvez appliquer pour modifier le contenu d'une liste. Pour une liste exhaustive des méthodes disponibles, vous pouvez consulter la documentation officielle Python.

list_mind_map.jpeg Par exemple, vous pourriez créer un rapport où vous suivez différentes métriques commerciales. Vous pourriez stocker l'ensemble initial de métriques dans une liste :

python
business_metrics = ["Revenue", "Customer Satisfaction", "Market Share", "Employee Turnover"]

Si vous devez mettre à jour "Employee Turnover" en "Employee Retention Rate" dans votre liste, accédez à l'élément "Employee Turnover" par son index et attribuez-lui la nouvelle valeur comme suit :

python
business_metrics[3] = "Employee Retention Rate"
print(business_metrics)
# Output:
# ['Revenue', 'Customer Satisfaction', 'Market Share', 'Employee Retention Rate']

Exercice

Dans le notebook Jupyter Favorite_Books_List.ipynb, entraînez-vous à mettre à jour des éléments dans les listes en suivant ces étapes :

  1. Mettez à jour le titre de votre deuxième livre préféré dans la liste favorite_books.
  2. Mettez à jour les détails (titre, auteur, année de publication) de votre deuxième livre préféré dans la liste favorite_books_details.

Solution

Voir la solution
python
# 1. Update the Title of Your Second favorite Book
# Printing the original list
print("Original list of favorite books:")
print(favorite_books)

# Update the title of the second favorite book
favorite_books[1] = "The Lord of the Rings"  # Index 1 refers to the second book

# Printing the updated list
print("\nUpdated list of favorite books:")
print(favorite_books)

# Printing the original details
print("Original details of favorite books:")
print(favorite_books_details)

# 2.Update the details of the second favorite book
favorite_books_details[1] = ["The Lord of the Rings", "J.R.R. Tolkien", 1954]  # Index 1 refers to the second book

# Printing the updated details
print("\nUpdated details of favorite books:")
print(favorite_books_details)


Ajout d'éléments

Vous pouvez utiliser plusieurs méthodes pour ajouter de nouvelles données à des listes existantes. Reprenons notre liste business_metrics précédente et supposons que nous voulions ajouter une nouvelle métrique commerciale, comme "Net Profit", à la fin de la liste :

python
# Create an initial list
business_metrics = ["Revenue", "Customer Satisfaction", "Market Share", "Employee Retention Rate"]

# Append a new item to the list
business_metrics.append('Net Profit')

# Print the updated list
print(business_metrics)
# Output:
# ['Revenue', 'Customer Satisfaction', 'Market Share', 'Employee Retention Rate', 'Net Profit']

Le nouvel élément est ajouté à la fin en utilisant la méthode append().

Exercice

Dans le notebook Jupyter favorite_Books_List.ipynb, entraînez-vous à ajouter des éléments aux listes en suivant ces étapes :

  1. Ajoutez à la fin un nouveau livre préféré à la liste favorite_books.
  2. Ajoutez à la fin les détails d'un nouveau livre préféré à la liste favorite_books_details.

Solution

Voir la solution
python
# Printing the original list
print("Original list of favorite books:")
print(favorite_books)

# 1. Add a new favorite book to the end of the list
favorite_books.append("1984")  # Adding George Orwell's classic to the list

# Printing the updated list
print("\nUpdated list of favorite books:")
print(favorite_books)

# Printing the original details
print("Original details of favorite books:")
print(favorite_books_details)

# 2. Add details of the new favorite book to the end of the list
favorite_books_details.append(["1984", "George Orwell", 1949])  # Adding details of '1984'

# Printing the updated details
print("\nUpdated details of favorite books:")
print(favorite_books_details)


Insertion d'éléments

Une autre méthode pour ajouter des éléments à une liste consiste à utiliser la méthode insert(). Celle-ci vous permet d'insérer un nouvel élément à une position spécifique dans la liste.

Par exemple, si nous voulons ajouter "Customer Growth" à la deuxième position dans la liste business_metrics, nous pouvons faire ceci :

python
# Create an initial list
business_metrics = ["Revenue", "Customer Satisfaction", "Market Share", "Employee Retention Rate"]

# Insert a new item at the second position
business_metrics.insert(1, "Customer Growth")

# Print the updated list
print(business_metrics)
# Output:
# ['Revenue', 'Customer Growth', 'Customer Satisfaction', 'Market Share', 'Employee Retention Rate']

Dans cet exemple, "Customer Growth" est inséré à la deuxième position (index 1), décalant les autres éléments vers la droite.

Exercice

Dans le notebook Jupyter Favorite_Books_List.ipynb, entraînez-vous à ajouter des éléments aux listes en suivant ces étapes :

  1. Insérez le titre d'un livre que vous avez lu récemment à la deuxième position de la liste favorite_books.
  2. Insérez les détails d'un livre que vous avez lu récemment à la deuxième position de la liste favorite_books_details.

Solution

Voir la solution
python
# Printing the original list
print("Original list of favorite books:")
print(favorite_books)

# New book title
new_book_title = "The Hitchhiker's Guide to the Galaxy"

# 1. Insert the new book title into the second position (index 1)
favorite_books.insert(1, new_book_title)

# Printing the updated list
print("\nUpdated list of favorite books:")
print(favorite_books)

# Printing the original details
print("Original details of favorite books:")
print(favorite_books_details)

# New book details
new_book_details = ["The Hitchhiker's Guide to the Galaxy", "Douglas Adams", 1979]

# 2. Insert the new book details into the second position (index 1)
favorite_books_details.insert(1, new_book_details)

# Printing the updated list
print("\nUpdated Favorite Books Details:")
print(favorite_books_details)


Extension de la liste

Si vous voulez ajouter plusieurs éléments à une liste en même temps, vous pouvez utiliser la méthode extend(). Cette méthode prend un groupe d’éléments (comme une autre liste, un tuple ou une chaîne de caractères) et ajoute chacun de ces éléments à la fin de votre liste.

Par exemple, si nous voulons ajouter plusieurs nouvelles métriques commerciales à notre liste business_metrics existante, nous pouvons faire ceci :

python
# Create an initial list
business_metrics = ["Revenue", "Customer Satisfaction", "Market Share", "Employee Retention Rate"]

# List of new metrics to add
new_metrics = ["Net Profit", "Customer Acquisition Cost", "Operational Efficiency"]

# Extend the in initial list with the new metrics
business_metrics.extend(new_metrics)

# Print the updated list
print(business_metrics)
# Output:
# ['Revenue', 'Customer Satisfaction', 'Market Share', 'Employee Retention Rate', 'Net Profit', 'Customer Acquisition Cost', 'Operational Efficiency']

Dans cet exemple, la méthode extend() ajoute chaque élément de la liste new_metrics à la fin de la liste business_metrics.

Exercice

Dans le notebook Jupyter favorite_Books_List.ipynb, entraînez-vous à ajouter des éléments dans les listes en suivant ces étapes :

  1. Utilisez la méthode extend pour ajouter plusieurs nouveaux titres à la liste favorite_books.
  2. Utilisez la méthode extend pour ajouter plusieurs nouveaux détails de livres à la liste favorite_books_details.

Solution

Voir la solution
python
# Printing the original list
print("Original list of favorite books:")
print(favorite_books)

# New titles to add
new_titles = ["The Great Gatsby", "To Kill a Mockingbird", "Pride and Prejudice"]

# Use the extend method to add new titles to the list
favorite_books.extend(new_titles)

# Printing the updated list
print("\nUpdated list of favorite books:")
print(favorite_books)

# Printing the original details
print("Original details of favorite books:")
print(favorite_books_details)

# New details to add
new_book_details = [
    ["The Great Gatsby", "F. Scott Fitzgerald", 1925],
    ["To Kill a Mockingbird", "Harper Lee", 1960],
    ["Pride and Prejudice", "Jane Austen", 1813]
]

# Use the extend method to add new book details to the list
favorite_books_details.extend(new_book_details)

# Printing the updated details
print("\nUpdated details of favorite books:")
print(favorite_books_details)


Exercice

Rouvrez le notebook Jupyter Annual_Revenue.ipynb dans le dossier exercises du dossier Lists. Après avoir terminé les exercices, n'oubliez pas de sauvegarder le notebook pour conserver votre progression.

Modification d'un élément

Mettez à jour le chiffre d'affaires de la deuxième année dans la liste annual_revenue pour refléter une augmentation de 10%.

Ajout d'un élément

Ajoutez le chiffre d'affaires de l'année en cours à la liste annual_revenue. Par exemple, si le chiffre d'affaires de l'année en cours est de 100, incluez cette valeur dans la liste.

Insertion d'un élément

Insérez le chiffre d'affaires de 15 dans la liste annual_revenue entre la deuxième et la troisième année pour tenir compte de ce nouveau trimestre financier.

Extension de la liste

Utilisez la méthode extend pour ajouter les prévisions de chiffre d'affaires à la liste annual_revenue. Par exemple, si les prévisions sont de 50, 75 et 100, vous pouvez étendre la liste avec ces valeurs.

Solution

Voir la solution

Modification d'un élément

python
# Calculate the new revenue for the second year
annual_revenue = [45, 50, 55, 60, 65]
increase_percentage = 10
index_to_update = 1
revenue_percentage = annual_revenue[index_to_update] * (increase_percentage / 100)

# Update the revenue
annual_revenue[index_to_update] = annual_revenue[index_to_update] + revenue_percentage

# Print the updated list
print("Updated Annual Revenue (after increasing the second year by 10%):")
print(annual_revenue)

Voir la solution

Ajout d'un élément

python
# Append the revenue figure for the current year
current_year_revenue = 100
annual_revenue.append(current_year_revenue)

# Print the updated list
print("\nUpdated Annual Revenue (after appending the current year's revenue):")
print(annual_revenue)

Voir la solution

Insertion d'un élément

python
# Insert the new financial quarter revenue
new_quarter_revenue = 15
index_to_insert = 2
annual_revenue.insert(index_to_insert, new_quarter_revenue)

# Print the updated list
print("\nUpdated Annual Revenue (after inserting the new financial quarter revenue):")
print(annual_revenue)
Voir la solution

Extension de la liste

python
# List of predicted revenue figures
predicted_revenue = [50, 75, 100]

# Extend the annual_revenue list with predicted figures
annual_revenue.extend(predicted_revenue)

# Print the updated list
print("\nUpdated Annual Revenue (after extending with predicted revenue figures):")
print(annual_revenue)


Python propose plusieurs méthodes pour supprimer des éléments d'une liste. Reprenons notre business_metrics précédent et supposons que nous voulions supprimer une métrique commerciale d'une position spécifique, par exemple, la position 1 :

python
# Create a list
business_metrics = ['Revenue Growth', 'Customer Satisfaction', 'Employee Turnover']
# Removes and returns the second KPI
removed_metric = business_metricss.pop(1)
print(removed_metric)  # Output: 'Customer Satisfaction'
print(business_metrics)  # Output: ['Revenue Growth', 'Employee Turnover']

pop() nous aide à supprimer l'élément à la position donnée dans la liste et le renvoie. Si aucun index n'est spécifié, pop() supprime et renvoie le dernier élément de la liste.

Exercice

Dans le notebook Jupyter favorite_Books_List.ipynb, entraînez-vous à supprimer des éléments dans les listes en suivant ces étapes avec la méthode pop :

  1. Supprimez et renvoyez le deuxième livre préféré de la liste favorite_books.
  2. Supprimez et renvoyez les détails (titre, auteur, année de publication) de votre deuxième livre préféré de la liste favorite_books_details.

Solution

Voir la solution
python
# Remove and return the second favorite book
second_favorite_book = favorite_books.pop(1)

# Print the removed book and the updated list
print("Removed Book:", second_favorite_book)
print("Updated Favorite Books List:")
print(favorite_books)

# Remove and return the details of the second favorite book
second_favorite_book_details = favorite_books_details.pop(1)

# Print the removed details and the updated list
print("\\nRemoved Book Details:", second_favorite_book_details)
print("Updated Favorite Books Details List:")
print(favorite_books_details)

Méthode remove()

remove() supprime la première occurrence d'une valeur spécifiée.

python
business_metrics = ['Revenue Growth', 'Customer Satisfaction', 'Employee Turnover']
business_metrics.remove('Employee Turnover')  # Removes 'Employee Turnover' from the list
print(business_metrics)  # Output: ['Revenue Growth', 'Customer Satisfaction']

Exercice

Dans le notebook Jupyter Favorite_Books_List.ipynb, entraînez-vous à supprimer des éléments dans les listes en utilisant la méthode remove en suivant ces étapes :

  1. Supprimez la première occurrence d'un livre spécifique de la liste favorite_books.
  2. Supprimez la première occurrence des détails (titre, auteur, année de publication) d'un livre spécifique de la liste favorite_books_details.

Solution

Voir la solution
python
# Remove the first occurrence of "Dune"
book_to_remove = "Dune"
favorite_books.remove(book_to_remove)

# Print the updated list
print(f"Updated Favorite Books List after removing {book_to_remove}")
print(favorite_books)

# Remove the details of "The Hitchhiker's Guide to the Galaxy"
details_to_remove = ["The Hitchhiker's Guide to the Galaxy", "Douglas Adams", 1979]
favorite_books_details.remove(details_to_remove)

# Print the updated list
print(f"\\nUpdated Favorite Books Details List after removing details of {details_to_remove[0]}:")
print(favorite_books_details)

Méthode clear()

La méthode clear() supprime tous les éléments de la liste, la laissant vide.

python
business_metrics = ['Revenue Growth', 'Customer Satisfaction', 'Employee Turnover']
business_metrics.clear()  # Removes all elements from the list
print(business_metrics)  # Output: []

Exercice

Rouvrez le notebook Jupyter Annual_Revenue.ipynb dans le dossier exercises du dossier Lists. Après avoir terminé les exercices, n'oubliez pas de sauvegarder le notebook pour conserver votre progression.

1. Suppression d'un élément

Supprimez le chiffre d'affaires de la troisième année de la liste annual_revenue.

2. Suppression d'un élément à partir de sa valeur

Supprimez le chiffre d’affaires égal à 50 (correspondant au chiffre d’affaires de la deuxième année) de la liste annual_revenue.

Solution

Voir la solution

1. Suppression d'un élément

python
annual_revenue = [45, 50, 55, 60, 65]
# Remove the revenue figure of the third year
removed_revenue = annual_revenue.pop(3)

# Print the removed figure and the updated list
print("Removed Revenue Figure of the third year:", removed_revenue)
print("Updated Annual Revenue List (after removal):")
print(annual_revenue)

Voir la solution

2. Suppression d'un élément spécifique

python
# Remove the specific revenue figure of 45
revenue_to_remove = 45
annual_revenue.remove(revenue_to_remove)

# Print the removed figure and the updated list
print("\\nRemoved Revenue Figure:", revenue_to_remove)
print("Updated Annual Revenue List (after removal):")
print(annual_revenue)

Les listes sont souvent créées dans un ordre aléatoire, car vous ne pouvez pas toujours contrôler la façon dont les utilisateurs fournissent leurs données. C’est généralement inévitable, mais parfois, vous devez présenter vos informations dans un ordre spécifique. Parfois, vous voulez conserver l’ordre d’origine, et d’autres fois, vous voulez le modifier.

Python dispose de plusieurs méthodes pour organiser vos listes selon vos besoins. Par exemple, si vous recevez une liste de noms de clients, vous pourriez vouloir les trier par ordre alphabétique. Python propose deux outils principaux pour ce faire :

  • La méthode sort, qui trie une liste directement (in-place), modifiant son ordre initial.
  • La fonction sorted, qui crée une nouvelle liste triée, sans affecter l’originale.

Utilisation de sort (modification permanente) :

python
# Example of sorting customer names using sort()
customer_names = ["Alice", "Charlie", "Bob"]

# Sort the customer names in alphabetical order
customer_names.sort()

print(customer_names)
# Output: ['Alice', 'Bob', 'Charlie']
# The original list is now permanently sorted.

Utilisation de sorted (modification temporaire) :

python
# Example of sorting customer names using sorted()
customer_names = ["Alice", "Charlie", "Bob"]

# Get a new list that is sorted alphabetically
sorted_customer_names = sorted(customer_names)

print(sorted_customer_names)
# Output: ['Alice', 'Bob', 'Charlie']
# The original list remains unchanged.
print(customer_names)
# Output: ['Alice', 'Charlie', 'Bob']

Info

Note : Pour trier une liste dans l'ordre inverse (par exemple de Z à A), utilisez le paramètre reverse=True avec l'une ou l'autre des méthodes sort ou sorted.

python
# Example with sort (permanent change)
customer_names = ["Alice", "Charlie", "Bob"]
customer_names.sort(reverse=True)
print(customer_names)  # Output: ['Charlie', 'Bob', 'Alice']

# Example with sorted (temporary change)
product_names = ["Laptop", "Phone", "Tablet"]
sorted_product_names = sorted(product_names, reverse=True)
print(sorted_product_names)  # Output: ['Tablet', 'Phone', 'Laptop']
print(product_names)  # Output: ['Laptop', 'Phone', 'Tablet']

Exercice

Dans le notebook Jupyter Favorite_Books_List.ipynb, entraînez-vous à trier des éléments dans les listes en suivant ces étapes :

  1. Triez la liste favorite_books par ordre alphabétique en utilisant la méthode sort.
  2. Triez la liste imbriquée favorite_books_details en fonction des titres des livres par ordre alphabétique en utilisant la méthode sort. Supposez que le premier élément de chaque sous-liste est le titre du livre.

Solution

Voir la solution
python
# 1. Sort the favorite_books list in alphabetical order
favorite_books.sort()
print("Sorted favorite Books List:")
print(favorite_books)

# 2. Sort the favorite_books_details list based on the book titles
favorite_books_details.sort()
print("\nSorted favorite Books Details List (by book titles):")
print(favorite_books_details)

Inversion des éléments

Pour inverser l’ordre d’une liste, vous pouvez utiliser la méthode reverse(). Elle modifie la liste directement (in-place). Si vous souhaitez conserver l’originale intacte, vous pouvez utiliser le découpage avec la syntaxe [::-1], qui crée une nouvelle liste inversée.

Prenons un exemple simple :

python
# Define a list of project names
projects = ["Project A", "Project B", "Project C"]

# Reverse the order of the list using slicing
reversed_projects = projects[::-1]

# Print the reversed list of projects
print(reversed_projects)  # Output: ['Project C', 'Project B', 'Project A']

# Note: The original list remains unchanged
print(projects)  # Output: ['Project A', 'Project B', 'Project C']

# To reverse the original list in-place, you can use the reverse() method
projects.reverse()
print(projects)  # Output: ['Project C', 'Project B', 'Project A']

Exercice

Dans le notebook Jupyter favorite_Books_List.ipynb, entraînez-vous à inverser des éléments dans les listes en suivant ces étapes :

  1. Inversez la liste favorite_books en utilisant la méthode reverse.
  2. Inversez la liste imbriquée favorite_books_details pour que l'ordre des livres soit inversé.

Solution

Voir la solution
python
# Step 1: Reverse the favorite_books list
favorite_books.reverse()
print("Reversed favorite_books:", favorite_books)

# Step 2: Reverse the favorite_books_details nested list
favorite_books_details.reverse()
print("Reversed favorite_books_details:", favorite_books_details)

Exercice

Rouvrez le notebook Jupyter Annual_Revenue.ipynb dans le dossier exercises du dossier Lists. Après avoir terminé les exercices, n'oubliez pas de sauvegarder le notebook pour conserver votre progression.

Tri des éléments

Triez la liste annual_revenue par ordre croissant pour organiser les données de chiffre d'affaires, puis affichez la liste triée.

Inversion des éléments

Inversez la liste annual_revenue pour visualiser l'historique financier dans l'ordre inverse, puis affichez la liste inversée pour examen.

Solution

Voir la solution
python
annual_revenue = [45, 50, 55, 60, 65]

# 1. Sorting Elements
annual_revenue.sort()
print("Sorted annual_revenue:", annual_revenue)

# 2. Reversing Elements
annual_revenue.reverse()
print("Reversed annual_revenue:", annual_revenue)

Tout comme avec les chaînes de caractères, vous pouvez utiliser une boucle for pour parcourir les éléments d’une liste dans l’ordre où ils apparaissent. Cela vous permet d**’accéder à chaque élément de la liste un par un**, afin d’effectuer des opérations spécifiques sur chacun d’eux.

Dans l’exemple suivant, nous utilisons une boucle pour afficher chaque nom dans une liste. De plus, nous utilisons la fonction intégrée len(), qui permet de mesurer la longueur d’un texte (ici, le nombre de caractères dans chaque nom). Si ce concept est nouveau, ne vous inquiétez pas : observez simplement son usage.

python
# Measure customer names:
customer_names = ["Alice", "Bob", "Charlie", "Diana"]
for name in customer_names:
    print(name, len(name))

# Output:
# Alice 5
# Bob 3
# Charlie 7
# Diana 5

Par exemple, vous pouvez extraire les noms de plus de 3 lettres qui existent également dans une autre liste :

python
# Extract names with more than 3 letters:
client_names = ["Eve", "Frank", "Grace", "Heidi"]
existing_names = ["Carmine", "Eve", "Bob", "Grace"]

long_names = []
for name in client_names:
    if (len(name) > 3) and (name in existing_names):
        long_names.append(name)

print(long_names)  # Output: ['Grace']

long_names est une liste vide où nous stockerons les noms qui répondent à nos deux conditions. Il est très courant de créer une liste vide en dehors d'une boucle for pour stocker des données. name in existing_names est une condition qui vérifie l'existence d'un élément dans la liste et renvoie soit True soit False.

Exercice

Dans le notebook Jupyter favorite_Books_List.ipynb, entraînez-vous à parcourir des éléments dans les listes en suivant ces étapes avec des boucles for :

  1. Affichez chaque titre de livre de la liste favorite_books.

  2. Affichez les détails de chaque livre de la liste imbriquée favorite_books_details. Vous pouvez utilisez une boucle for, et grâce aux f-strings, vous pouvez formater chaque sortie de manière élégante et lisible. Voici un exemple de sortie attendue :

    pyhton
    Title: book title, Author: author full name, Year: year
    Title: another book title, Author: another author full name: Year: another year
    ...
    
    

Solution

Voir la solution
python
# 1. Print each book title in the favorite_books list
print("Book Titles:")
for book in favorite_books:
    print(book)

# 2. Print each book's details in the favorite_books_details nested list
print("Book Details:")
for details in favorite_books_details:
    print(f"Title: {details[0]}, Author: {details[1]}, Year: {details[2]}")

Exercice

Manipulation du chiffre d'affaires annuel

Rouvrez le notebook Jupyter Annual_Revenue.ipynb dans le dossier exercises du dossier Lists. Après avoir terminé les exercices, n'oubliez pas de sauvegarder le notebook pour conserver votre progression.

1. Vérification de l'existence d'un élément

Vérifiez si le chiffre d'affaires de 5000 existe dans la liste annual_revenue. Si trouvé, affichez un message indiquant la présence du chiffre ; sinon, affichez un message indiquant que le chiffre n'est pas dans la liste.

Voici un exemple de code que vous pouvez utiliser pour l'exercice :

python
# Checking whether an element exists in the annual_revenue list
annual_revenue = [4500, 5000, 6200, 7200, 8900]
revenue_to_check = 5000

# Hints:
# Use an if-else statement to check if revenue_to_check is in annual_revenue
# Use the `in` keyword to perform the check
# Print a message indicating whether the figure is found in the list


2. Parcours de listes

Calculez le chiffre d'affaires total à partir de la liste annual_revenue. Affichez le chiffre d'affaires total.

Voici un exemple de code que vous pouvez utiliser pour l'exercice :

python
# Summing elements in the annual_revenue list using a for loop
annual_revenue = [4500, 5000, 6200, 7200, 8900]
total_revenue = 0

# Hints:
# 1. Iterate through each revenue figure in the annual_revenue list
# 2. At each iteration add the current revenue figure to the total_revenue

# Print the calculated total_revenue

Info

Note : Une instruction assert est utilisée pour vérifier si une condition est vraie. Si elle n'est pas vraie, le programme lèvera une AssertionError. Dans ce contexte, assert total_revenue == sum(annual_revenue) garantit que le chiffre d'affaires total calculé correspond à la somme de la liste.

3. Nombre aléatoire

Complétez le code Python pour créer un programme interactif où l’utilisateur tente de deviner un nombre aléatoire choisi par le programme. Le programme donne des indications après chaque tentative pour aider l’utilisateur à trouver la bonne réponse, tout en comptabilisant le nombre d’essais. Suivez les étapes pour compléter le code et tester vos connaissances.

Vous pouvez créer un nouveau fichier guess_the_number.ipynb dans votre dossier d’exercice.

Suivez ces étapes :

  1. Complétez le code :
    • Remplissez les parties manquantes du code pour rendre le jeu fonctionnel et interactif.
  2. Testez votre code :
    • Après avoir rempli les blancs, exécutez le code pour vous assurer qu'il fonctionne comme prévu.
python
import random

# 1. Define the range of numbers
min_number = 1
max_number = 10

# 2. Randomly select a number
hidden_number = random.randint(min_number, max_number)

print(f"I have thought of a number between {min_number} and {max_number}. Can you guess what it is?")

# Initialize the attempt counter
attempts = 0

# 3. Provide instructions for the program
print("Enter a number and receive hints to help you find the correct answer.")

# 4. Main loop
while ...:  # Replace ... with your code
    # Get user input
    try:
        guess = int(input("Enter your guess: "))
    except ValueError:
        print("Please enter a valid number.")
        continue

    # 6. Increment the attempt counter
    attempts = ...  # Replace ... with your code

    # 7. Check if the guess is correct
    if guess == ...:  # Replace ... with your code
        print(f"Congratulations! You guessed the number {hidden_number} in {attempts} attempts.")
        break
    else:
        # 8. Provide a hint if the guess is incorrect
        if guess < ...:  # Replace ... with hidden_number to compare
            print("The number I am thinking of is higher.")
        else:
            print("The number I am thinking of is lower.")
Info

Note : L'instruction import random en Python inclut le module random dans notre script. Ce module offre des fonctions pour générer des nombres aléatoires et faire des sélections aléatoires. Par exemple, random.choice(green_tech) sélectionne un élément aléatoire de la liste green_tech.

Solution

Voir la solution

1. Vérification de l'existence d'un élément

python
# Sample data
annual_revenue = [4500, 5000, 6200, 7200, 8900]
revenue_to_check = 5000

# Checking whether an element exists in the annual_revenue list
if revenue_to_check in annual_revenue:
    print(f"Yes, {revenue_to_check} gold coin exists in the list!")
else:
    print(f"No, {revenue_to_check} gold coin does not exist in the list.")


Voir la solution

2. Parcours de listes

python
# Sample data
annual_revenue = [4500, 5000, 6200, 7200, 8900]
total_revenue = 0

# Summing elements in the annual_revenue list using a for loop
for revenue in annual_revenue:
    total_revenue = total_revenue + revenue  # Add current revenue figure to total_revenue

# Assert statement to ensure the calculated total matches the sum of the list
assert total_revenue == sum(annual_revenue), "Total revenue calculation is incorrect!"

# Print the calculated total_revenue
print(f"Total revenue of your kingdom: {total_revenue} gold coins")


Voir la solution

3. Nombre aléatoire

python
import random

# 1. Define the range of numbers
min_number = 1
max_number = 10

# 2. Randomly select a number
hidden_number = random.randint(min_number, max_number)

print(f"I have thought of a number between {min_number} and {max_number}. Can you guess what it is?")

# Initialize the attempt counter
attempts = 0

# 3. Provide instructions for the program
print("Enter a number and receive hints to help you find the correct answer.")

# 4. Main loop
while True:
    # Get user input
    try:
        guess = int(input("Enter your guess: "))
    except ValueError:
        print("Please enter a valid number.")
        continue

    # 6. Increment the attempt counter
    attempts += 1

    # 7. Check if the guess is correct
    if guess == hidden_number:
        print(f"Congratulations! You guessed the number {hidden_number} in {attempts} attempts.")
        break
    else:
        # 8. Provide a hint if the guess is incorrect
        if guess < hidden_number:
            print("The number I am thinking of is higher.")
        else:
            print("The number I am thinking of is lower.")

Excellent travail ! Dans ce leçon, vous avez exploré les listes Python, qui sont des collections ordonnées d'éléments.

Vous avez appris à créer des listes, à accéder à leurs éléments et à les modifier. Vous vous êtes exercés à utiliser diverses méthodes de liste, notamment .append(), .remove(), .pop(), et .sort(). De plus, vous avez travaillé sur le parcours de listes simples et imbriquées.

Continuez sur cette lancée et poursuivez l'exploration de la puissance et de la flexibilité des listes Python !