logo

Comment initialiser une liste en Python ?

Tout objet Python peut être contenu dans un groupe de valeurs ordonnées dans une liste Python. Étant donné que la liste est une structure de données mutable en Python, nous pouvons ajouter, supprimer ou modifier les valeurs existantes dans ce conteneur. Contrairement aux ensembles, la liste autorise de nombreuses instances de la même valeur et traite chacune comme un élément différent. Dans ce tutoriel, nous allons apprendre à initialiser un objet liste en Python.

Initialiser les listes à l'aide des crochets

L'utilisation d'un crochet est une façon d'initialiser une liste sans valeurs si nous voulons construire une liste vide en Python sans valeurs. Pour initialiser une liste, il suffit de spécifier une paire de crochets avec ou sans valeurs d'éléments.

Code

 # Python program to show how to initialize a list using square brackets # Initializing an empty list list_ = [] print('An empty list: ', list_) # Initializing a list with some values list_ = [1, 3, 5, 7] print('A non-Empty list: ', list_) 

Sortir:

 An empty list: [] A non-Empty list: [1, 3, 5, 7] 

Utilisation de la fonction list() intégrée pour initialiser une liste

La fonction list() de Python construit la liste, un objet itérable. C'est donc une autre façon de créer une liste Python vide sans aucune donnée dans ce langage de codage.

Un objet itérateur, une séquence qui permet l'itération ou un conteneur peuvent tous être itérables. Une nouvelle liste vide est construite si aucune entrée n'est donnée.

Code

 # Python program to show how to initialize a list using the built-in list function # Initializing an empty list list_ = list() print('An empty list: ', list_) # Initializing a non-empty list list_ = list([1, 2, 3]) print('A non-empty list: ', list_) 

Sortir:

 An empty list: [] A non-empty list: [1, 2, 3] 

La méthode des crochets est préférée à la fonction list() intégrée car elle est plus claire et plus illustrative.

Utilisation des compréhensions de liste pour initialiser une liste

Nous pouvons utiliser l'approche de compréhension de liste pour définir les paramètres par défaut de la liste. Il comprend une expression entre crochets, une instruction for et une instruction if facultative qui peut ou non suivre. Tout élément que nous souhaitons ajouter à la liste peut être écrit sous forme d’expression. L'expression serait 0 si l'utilisateur initialisait la liste avec des zéros.

La compréhension de liste est une approche élégante, simple et bien connue pour construire une liste basée sur un itérateur.

Code

 # Python program to show how to initialize a list using list comprehension # Initializing a list list_ = [item for item in range(10)] print('The list was created using list comprehension: ', list_) 

Sortir:

 The list was created using list comprehension: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Cette technique initialise les listes beaucoup plus rapidement que les boucles for et while de Python.

Initialiser une liste Python à l'aide de l'opérateur *

Une autre façon d’initialiser une liste en Python consiste à utiliser l’opérateur *. Il crée une liste avec plusieurs valeurs. La syntaxe d'utilisation de cet opérateur est [element] * n. Ici, n est le nombre de fois que nous voulons répéter l'élément dans la liste.

Cette méthode est utile lorsque l'on souhaite initialiser une liste de longueurs prédéfinies.

Code

 # Python program to show how to use the * operator to initialize a list list_ = [5]*10 print (list) 

Sortir:

 [5, 5, 5, 5, 5, 5, 5, 5, 5] 

Cette méthode est très efficace et constitue le moyen le plus rapide de créer une liste. Nous comparerons le temps pris par les méthodes plus loin dans ce tutoriel.

Le seul inconvénient de l'utilisation de cet opérateur pour initialiser une liste Python est lorsque nous devons créer une liste 2D, car cette méthode ne créera qu'une liste superficielle, c'est-à-dire qu'elle créera un seul objet de liste, et tous les indices y feront référence. objet qui sera très gênant. C'est pourquoi nous utilisons la compréhension de liste lorsque nous devons créer des listes 2D.

comment mettre à jour en java

Utiliser une boucle for et append()

Nous allons créer une liste vide et exécuter une boucle for pour ajouter des éléments à l'aide de la fonction append() de la liste.

Code

 # Python program to show how to use a for loop to initialize a list arr = [] for i in range(1000): arr.append(0) 

Utiliser une boucle While pour initialiser une liste

Nous pouvons utiliser une boucle while tout comme nous avons utilisé la boucle for pour initialiser une liste.

Code

 # Python program to initialize a list using a while loop # Creating an empty list array = [] # Declaring counter variables i = 0 # Starting a while loop while(i <10): array.append(0) i +="1" print(array) < pre> <p> <strong>Output:</strong> </p> <pre> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] </pre> <h2>Time Complexity</h2> <p>Let us now see how long each of the described approaches will take. We will initialize a list of 100000 elements 1000 times. We will calculate the average time each method takes to perform this task.</p> <p> <strong>Code</strong> </p> <pre> # Python program to see the time taken by various methods to initialize a list # importing the time module to calculate the time taken by a chunk of code import time # initializing the lists for various methods forLoop = [] whileLoop = [] listComprehension = [] starOperator = [] # repeating the process of generating a list of 100000 elements 500 times # Then calculate the average time taken by the methods for i in range(1000): # starting time of the execution begin = time.time() # declaring an empty list list_ = [] # running a for loop and iterating it 100000 times for i in range(100000): list_.append(0) # stoping time of the execution end = time.time() forLoop.append(end - begin) # starting time of the execution begin = time.time() # declaring an empty list list_ = [] i = 0 # COunter variable # running a while loop and iterating it 100000 times while i <100000: 100000 list_.append(0) i +="1" end="time.time()" whileloop.append(end - begin) begin="time.time()" # using a list comprehension to initialize the for in range(100000)] listcomprehension.append(end astrick (*) operator * staroperator.append(end print('the average execution time of loop is: ', sum(forloop) 1000) while sum(whileloop) sum(listcomprehension) taken operator: sum(staroperator) < pre> <p> <strong>Output:</strong> </p> <pre> The average execution time of for loop is: 0.01166958212852478 The average execution time of the while loop is: 0.01916465663909912 The average execution time of list comprehension is: 0.005084690093994141 The average execution time was taken of * operator: 0.00028331947326660156 </pre> <p>We can see that for and while loops take almost the same execution time. However, for loop is a little better than the while loop.</p> <p>List comprehension shows much better performance than the for and while loops. It is 2-3 times faster than the loops. Thus, list comprehension is much more efficient than the append() function of the lists.</p> <p>The * operator has shown the best performance out of all the four methods.</p> <hr></100000:></pre></10):>

Complexité temporelle

Voyons maintenant combien de temps prendra chacune des approches décrites. Nous initialiserons 1000 fois une liste de 100 000 éléments. Nous calculerons le temps moyen nécessaire à chaque méthode pour effectuer cette tâche.

Code

 # Python program to see the time taken by various methods to initialize a list # importing the time module to calculate the time taken by a chunk of code import time # initializing the lists for various methods forLoop = [] whileLoop = [] listComprehension = [] starOperator = [] # repeating the process of generating a list of 100000 elements 500 times # Then calculate the average time taken by the methods for i in range(1000): # starting time of the execution begin = time.time() # declaring an empty list list_ = [] # running a for loop and iterating it 100000 times for i in range(100000): list_.append(0) # stoping time of the execution end = time.time() forLoop.append(end - begin) # starting time of the execution begin = time.time() # declaring an empty list list_ = [] i = 0 # COunter variable # running a while loop and iterating it 100000 times while i <100000: 100000 list_.append(0) i +="1" end="time.time()" whileloop.append(end - begin) begin="time.time()" # using a list comprehension to initialize the for in range(100000)] listcomprehension.append(end astrick (*) operator * staroperator.append(end print(\'the average execution time of loop is: \', sum(forloop) 1000) while sum(whileloop) sum(listcomprehension) taken operator: sum(staroperator) < pre> <p> <strong>Output:</strong> </p> <pre> The average execution time of for loop is: 0.01166958212852478 The average execution time of the while loop is: 0.01916465663909912 The average execution time of list comprehension is: 0.005084690093994141 The average execution time was taken of * operator: 0.00028331947326660156 </pre> <p>We can see that for and while loops take almost the same execution time. However, for loop is a little better than the while loop.</p> <p>List comprehension shows much better performance than the for and while loops. It is 2-3 times faster than the loops. Thus, list comprehension is much more efficient than the append() function of the lists.</p> <p>The * operator has shown the best performance out of all the four methods.</p> <hr></100000:>

Nous pouvons voir que les boucles for et while prennent presque le même temps d’exécution. Cependant, la boucle for est un peu meilleure que la boucle while.

La compréhension des listes montre de bien meilleures performances que les boucles for et while. C'est 2 à 3 fois plus rapide que les boucles. Ainsi, la compréhension des listes est bien plus efficace que la fonction append() des listes.

L'opérateur * a montré les meilleures performances parmi les quatre méthodes.