Bármely Python-objektum szerepelhet a Python-lista rendezett értékeinek csoportjában. Mivel a lista egy módosítható adatstruktúra a Pythonban, hozzáadhatjuk, eltávolíthatjuk vagy módosíthatjuk a meglévő értékeket ebben a tárolóban. A készletekkel ellentétben a lista számos azonos értékű példányt engedélyez, és mindegyiket különböző elemként kezeli. Ebben az oktatóanyagban megtanuljuk, hogyan kell inicializálni egy listaobjektumot Pythonban.
Inicializálja a listákat a szögletes zárójelekkel
A szögletes zárójel használata egy érték nélküli lista inicializálásának egyik módja, ha üres listát akarunk létrehozni a Pythonban értékek nélkül. A lista inicializálásához csak egy pár szögletes zárójelet kell megadnunk elemértékekkel vagy anélkül.
Kód
# 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_)
Kimenet:
An empty list: [] A non-Empty list: [1, 3, 5, 7]
A beépített list() függvény használata a lista inicializálására
A Python list() függvénye létrehozza a listát, egy iterálható objektumot. Ezért ez egy másik módja annak, hogy üres Python-listát hozzunk létre adat nélkül ebben a kódolási nyelvben.
Egy iterátor objektum, egy iterációt lehetővé tevő sorozat vagy egy tároló mind lehet iterálható. Új üres lista jön létre, ha nem adunk meg bevitelt.
Kód
# 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_)
Kimenet:
hálózat és a hálózat típusai
An empty list: [] A non-empty list: [1, 2, 3]
A szögletes zárójeles módszert előnyben részesítik a beépített list() függvénnyel szemben, mert áttekinthetőbb és szemléletesebb.
Listamegértések használata lista inicializálására
A lista alapértelmezett paramétereinek beállításához használhatjuk a listamegértési megközelítést. Tartalmaz egy szögletes zárójelbe tett kifejezést, egy for utasítást és egy opcionális if utasítást, amely követheti vagy nem követi. Bármely elem, amelyet hozzá kívánunk adni a listához, felírható kifejezésként. A kifejezés 0 lenne, ha a felhasználó nullákkal inicializálná a listát.
A listaértelmezés egy elegáns, egyszerű és jól ismert megközelítés egy iterátoron alapuló lista összeállításához.
Kód
# 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_)
Kimenet:
The list was created using list comprehension: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Ez a technika sokkal gyorsabban inicializálja a listákat, mint a Python for és while ciklusai.
Python-lista inicializálása a * operátor használatával
A lista Pythonban történő inicializálásának másik módja a * operátor használata. Több értéket tartalmazó listát hoz létre. Az operátor használatának szintaxisa: [elem] * n. Itt n az a szám, ahányszor meg akarjuk ismételni az elemet a listában.
Ez a módszer akkor segít, ha egy előre meghatározott hosszúságú listát szeretnénk inicializálni.
Kód
# Python program to show how to use the * operator to initialize a list list_ = [5]*10 print (list)
Kimenet:
[5, 5, 5, 5, 5, 5, 5, 5, 5]
Ez a módszer nagyon hatékony és a leggyorsabb módja a lista létrehozásának. Az oktatóanyag későbbi részében összehasonlítjuk a módszerek által igénybe vett időt.
Az egyetlen hátránya ennek az operátornak a Python-lista inicializálására, ha 2D listát kell létrehoznunk, mivel ez a módszer csak sekély listát hoz létre, azaz egyetlen listaobjektumot hoz létre, és az összes index erre fog hivatkozni. tárgyat, ami nagyon kényelmetlen lesz. Ezért használjuk a listaértelmezést, amikor 2D listákat kell létrehoznunk.
A for Loop és az append() használata
Létrehozunk egy üres listát, és lefuttatjuk a for ciklust az elemek hozzáadásához a lista append() függvényével.
Kód
# Python program to show how to use a for loop to initialize a list arr = [] for i in range(1000): arr.append(0)
A While ciklus használata a lista inicializálására
A while ciklust ugyanúgy használhatjuk, mint a ciklust a lista inicializálására.
Kód
# 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):>
Idő összetettsége
Lássuk most, mennyi ideig tart az egyes leírt megközelítések. Egy 100 000 elemből álló listát 1000 alkalommal inicializálunk. Kiszámoljuk, hogy az egyes módszerek átlagosan mennyi időt vesznek igénybe a feladat végrehajtásához.
Kód
# 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:>
Láthatjuk, hogy a for és a while ciklusok csaknem ugyanannyi végrehajtási időt vesznek igénybe. A for ciklus azonban egy kicsit jobb, mint a while ciklus.
cdr teljes formában
A listaértés sokkal jobb teljesítményt mutat, mint a for és a while ciklusok. 2-3-szor gyorsabb, mint a hurkok. Így a listaértés sokkal hatékonyabb, mint a listák append() függvénye.
A * operátor mutatta a legjobb teljesítményt mind a négy módszer közül.
100000:>10):>