Python est un langage très flexible et peut effectuer une seule tâche de plusieurs manières, par exemple, une liste d'initialisation peut être exécutée de plusieurs manières. L'article suivant vous présentera plusieurs méthodes d'initialisation Python et comparera l'efficacité de ces méthodes. J'espère qu'il vous sera utile.
Ci-dessous, nous présenterons quelques méthodes d'initialisation d'une liste en Python (nous créons une liste de taille 1000 et l'initialisons à zéro).
Méthode 1 : Utilisation de la boucle for et append()
Nous pouvons créer une liste vide et utiliser la méthode append() pour transmettre le for Loop n fois pour ajouter des éléments à la liste.
arr = [] for i in range(1000): arr.append(0)
Méthode 2 : utiliser la boucle while avec la variable counter et append()
C'est quelque peu similaire à la méthode 1, mais nous Utilisez une boucle while au lieu d'une boucle for.
arr = [] i = 0 while(i<1000): arr.append(0)
Méthode 3 : Utiliser la compréhension de liste
La compréhension de liste est une méthode utilisée par les mathématiciens pour implémenter La manière pythonique d'étiqueter les collections est bien connu. Il se compose de crochets contenant une expression, suivie d'une clause for, suivie d'une clause if facultative.
L'expression peut être n'importe quel type d'objet que nous voulons mettre dans la liste ; puisque nous avons initialisé la liste avec zéro, notre expression ne sera que 0.
arr = [0 for i in range(1000)]
Explication : la compréhension de liste peut être utilisée pour écrire du code efficace, et sa vitesse d'exécution est 35 % plus rapide que la boucle for.
Méthode 4 : Utiliser l'opérateur *
L'opérateur peut être utilisé comme [objet] * n, où n est le nombre d'éléments dans le tableau .
arr = [0]*1000
Comparaison du temps d'exécution du code
Jetons un coup d'œil au temps d'exécution de ces quatre méthodes pour voir quelle méthode est la meilleure rapide.
Exemple : Nous calculerons le temps moyen que prend chaque méthode pour initialiser un tableau de 10 000 éléments 500 fois.
# 导入时间模块以计算时间 import time # 初始化列表以保存时间 forLoopTime = [] whileLoopTime = [] listComprehensionTime = [] starOperatorTime = [] # 重复此过程500次,并计算所用的平均时间。 for k in range(500): # 开始时间 start = time.time() # 声明空列表 a = [] # 执行for循环10000次 for i in range(10000): a.append(0) # 停止时间 stop = time.time() forLoopTime.append(stop-start) # 开始时间 start = time.time() # 声明空列表 a = [] i = 0 # 执行while循环10000次 while(i<10000): a.append(0) i+= 1 stop = time.time() whileLoopTime.append(stop-start) start = time.time() # 使用列表推导(List Comprehension) 来初始化列表 a = [0 for i in range(10000)] stop = time.time() listComprehensionTime.append(stop-start) start = time.time() # 使用*运算符 a = [0]*10000 stop = time.time() starOperatorTime.append(stop-start) print("for循环所用的平均时间:" + str(sum(forLoopTime)/100)) print("while循环所用的平均时间:" + str(sum(whileLoopTime)/100)) print("列表推导所用的平均时间:" + str(sum(listComprehensionTime)/100)) print("* 运算符所用的平均时间: " + str(sum(starOperatorTime)/100))
Sortie :
Remarque : les délais varient en fonction de la plateforme sur laquelle ce code est exécuté. Ces temps ne sont utilisés que pour étudier les performances relatives de ces méthodes d'initialisation.
● On peut voir que le temps pris par les boucles for et while est presque le même.
● Les performances de compréhension de liste sont bien meilleures que celles des boucles for et while, la première est 3 à 5 fois plus rapide. Un autre exemple de cette différence peut être vu lorsque nous essayons de créer une liste de nombres de 1 à 1000. Utiliser une compréhension de liste est bien mieux que d’utiliser append().
a = [i for i in range(1,1001)]
● L'utilisation de l'opérateur * est plus rapide que les autres, c'est ainsi que vous devez initialiser la liste
Recommandation du didacticiel vidéo associé : "Tutoriel Python"
Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il pourra être utile à l'étude de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!