logo

Jak zainicjować listę w Pythonie?

Dowolny obiekt języka Python może znajdować się w grupie uporządkowanych wartości na liście języka Python. Ponieważ lista jest zmienną strukturą danych w Pythonie, możemy dodawać, usuwać lub zmieniać istniejące wartości w tym kontenerze. W przeciwieństwie do zestawów, lista dopuszcza wiele wystąpień tej samej wartości i traktuje każdy element jako inny element. W tym samouczku dowiemy się, jak zainicjować obiekt listy w Pythonie.

Zainicjuj listy za pomocą nawiasów kwadratowych

Użycie nawiasu kwadratowego to jeden ze sposobów zainicjowania listy bez wartości, jeśli chcemy skonstruować pustą listę w Pythonie bez wartości. Aby zainicjować listę, wystarczy podać parę nawiasów kwadratowych z wartościami pozycji lub bez.

Kod

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

Wyjście:

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

Używanie wbudowanej funkcji list() do inicjowania listy

Funkcja list() w Pythonie konstruuje listę, obiekt iterowalny. Dlatego jest to kolejny sposób na utworzenie pustej listy Pythona bez żadnych danych w tym języku kodowania.

Obiekt iteratora, sekwencja umożliwiająca iterację lub kontener mogą być iterowalne. Jeśli nie podano żadnych danych wejściowych, tworzona jest nowa pusta lista.

Kod

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

Wyjście:

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

Metoda z nawiasami kwadratowymi jest preferowana w stosunku do wbudowanej funkcji list(), ponieważ jest jaśniejsza i bardziej ilustracyjna.

Używanie wyrażeń listowych do inicjowania listy

Możemy zastosować podejście oparte na rozumieniu listy, aby ustawić domyślne parametry listy. Zawiera wyrażenie ujęte w nawiasy kwadratowe, instrukcję for i opcjonalną instrukcję if, która może nastąpić lub nie. Dowolny element, który chcemy dodać do listy, można zapisać jako wyrażenie. Wyrażenie będzie miało wartość 0, jeśli użytkownik zainicjalizuje listę zerami.

Rozumienie list to eleganckie, proste i dobrze znane podejście do konstruowania listy w oparciu o iterator.

Kod

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

Wyjście:

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

Ta technika inicjuje listy znacznie szybciej niż pętle for i while w Pythonie.

Zainicjuj listę Pythona za pomocą operatora *

Innym sposobem zainicjowania listy w Pythonie jest użycie operatora *. Tworzy listę zawierającą wiele wartości. Składnia użycia tego operatora to [element] * n. Tutaj n jest liczbą powtórzeń elementu na liście.

Ta metoda jest pomocna, gdy chcemy zainicjować listę predefiniowanych długości.

Kod

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

Wyjście:

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

Ta metoda jest bardzo wydajną i najszybszą metodą tworzenia listy. W dalszej części tego samouczka porównamy czas potrzebny na wykonanie tych metod.

Jedyną wadą użycia tego operatora do inicjowania listy w Pythonie jest sytuacja, gdy musimy utworzyć listę 2D, ponieważ ta metoda utworzy tylko płytką listę, tj. utworzy pojedynczy obiekt listy i wszystkie indeksy będą się do tego odnosić obiekt, co będzie bardzo niewygodne. Dlatego właśnie używamy rozumienia list, gdy musimy tworzyć listy 2D.

jpa vs hibernacja

Używanie pętli for i append()

Stworzymy pustą listę i uruchomimy pętlę for, aby dodać elementy za pomocą funkcji append() listy.

Kod

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

Używanie pętli while do inicjowania listy

Do inicjowania listy możemy użyć pętli while w taki sam sposób, w jaki użyliśmy pętli for.

Kod

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

Złożoność czasu

Zobaczmy teraz, ile czasu zajmie każde z opisanych podejść. Listę zawierającą 100 000 elementów zainicjujemy 1000 razy. Obliczymy średni czas potrzebny każdej metodzie na wykonanie tego zadania.

Kod

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

Widzimy, że pętle for i while zajmują prawie taki sam czas wykonania. Jednak pętla for jest trochę lepsza niż pętla while.

Rozumienie list wykazuje znacznie lepszą wydajność niż pętle for i while. Jest 2-3 razy szybszy niż pętle. Zatem zrozumienie list jest znacznie wydajniejsze niż funkcja append() list.

Operator * wykazał najlepszą wydajność ze wszystkich czterech metod.