logo

Ako inicializovať zoznam v Pythone?

Akýkoľvek objekt Pythonu môže byť obsiahnutý v skupine usporiadaných hodnôt v zozname Python. Pretože zoznam je meniteľná dátová štruktúra v Pythone, môžeme pridať, odstrániť alebo zmeniť existujúce hodnoty v tomto kontajneri. Na rozdiel od množín zoznam umožňuje množstvo inštancií rovnakej hodnoty a každý z nich považuje za inú položku. V tomto návode sa naučíme, ako inicializovať objekt zoznamu v Pythone.

Inicializujte zoznamy pomocou hranatých zátvoriek

Použitie hranatej zátvorky je jedným zo spôsobov, ako inicializovať zoznam bez hodnôt, ak chceme v Pythone vytvoriť prázdny zoznam bez hodnôt. Na inicializáciu zoznamu musíme zadať iba pár hranatých zátvoriek s hodnotami položiek alebo bez nich.

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_) 

Výkon:

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

Použitie vstavanej funkcie list() na inicializáciu zoznamu

Funkcia list() v Pythone vytvára zoznam, iterovateľný objekt. Preto je to ďalší spôsob, ako vytvoriť prázdny zoznam Python bez akýchkoľvek údajov v tomto kódovacom jazyku.

Iteračný objekt, sekvencia, ktorá umožňuje iteráciu, alebo kontajner môžu byť iterovateľné. Ak nie je zadaný žiadny vstup, vytvorí sa nový prázdny zoznam.

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_) 

Výkon:

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

Metóda hranatých zátvoriek je uprednostňovaná pred vstavanou funkciou list(), pretože je prehľadnejšia a názornejšia.

Použitie pochopenia zoznamu na inicializáciu zoznamu

Na nastavenie predvolených parametrov zoznamu môžeme použiť prístup porozumenia zoznamu. Obsahuje výraz uzavretý v hranatých zátvorkách, výraz for a voliteľný výraz if, ktorý môže alebo nemusí nasledovať. Akákoľvek položka, ktorú chceme pridať do zoznamu, môže byť napísaná ako výraz. Výraz by bol 0, ak by používateľ inicializoval zoznam s nulami.

Porozumenie zoznamu je elegantný, priamy a dobre známy prístup k zostaveniu zoznamu založeného na iterátore.

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_) 

Výkon:

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

Táto technika inicializuje zoznamy oveľa rýchlejšie ako cykly for a while v Pythone.

Inicializujte zoznam Python pomocou operátora *

Ďalším spôsobom inicializácie zoznamu v Pythone je použitie operátora *. Vytvára zoznam s viacerými hodnotami. Syntax použitia tohto operátora je [prvok] * n. Tu n je počet, koľkokrát chceme opakovať prvok v zozname.

Táto metóda pomáha, keď chceme inicializovať zoznam preddefinovaných dĺžok.

koľko rokov má pete davidson

kód

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

Výkon:

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

Tento spôsob je veľmi efektívny a najrýchlejší spôsob vytvorenia zoznamu. Čas, ktorý metódy zaberú, porovnáme neskôr v tomto návode.

Jedinou nevýhodou použitia tohto operátora na inicializáciu zoznamu v Pythone je, keď musíme vytvoriť 2D zoznam, pretože táto metóda vytvorí iba plytký zoznam, t. j. vytvorí jeden objekt zoznamu a všetky indexy sa budú naň vzťahovať. objekt, ktorý bude veľmi nepohodlný. To je dôvod, prečo používame pochopenie zoznamu, keď musíme vytvárať 2D zoznamy.

Použitie a for Loop a append()

Vytvoríme prázdny zoznam a spustíme cyklus for na pridávanie položiek pomocou funkcie append() zoznamu.

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) 

Použitie slučky While na inicializáciu zoznamu

Slučku while môžeme použiť rovnako ako cyklus for na inicializáciu zoznamu.

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):>

Časová zložitosť

Pozrime sa teraz, ako dlho bude trvať každý z opísaných prístupov. Inicializujeme zoznam 100 000 prvkov 1000-krát. Vypočítame priemerný čas, ktorý každá metóda potrebuje na vykonanie tejto úlohy.

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:>

Vidíme, že slučky for a while trvajú takmer rovnaký čas vykonávania. Cyklus for je však o niečo lepší ako cyklus while.

Porozumenie zoznamu vykazuje oveľa lepší výkon ako slučky for a while. Je to 2-3 krát rýchlejšie ako slučky. Pochopenie zoznamu je teda oveľa efektívnejšie ako funkcia append() zoznamov.

Operátor * ukázal najlepší výkon zo všetkých štyroch metód.