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.
100000:>10):>