logo

Как да инициализирате списък в Python?

Всеки обект на Python може да се съдържа в група от подредени стойности в списък на Python. Тъй като списъкът е променлива структура от данни в Python, можем да добавяме, премахваме или променяме съществуващите стойности в този контейнер. За разлика от наборите, списъкът позволява множество екземпляри на една и съща стойност и третира всеки като различен елемент. В този урок ще научим как да инициализираме обект от списък в Python.

Инициализирайте списъците с квадратни скоби

Използването на квадратна скоба е един от начините за инициализиране на списък без стойности, ако искаме да конструираме празен списък в Python без стойности. За да инициализираме списък, трябва само да посочим двойка квадратни скоби със или без стойности на елементи.

Код

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

Изход:

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

Използване на вградената функция list() за инициализиране на списък

Функцията list() на Python конструира списъка, итерируем обект. Следователно това е друг начин за създаване на празен списък на Python без никакви данни на този език за кодиране.

оператор if else java

Обект на итератор, последователност, която позволява итерация, или контейнер могат да бъдат итерируеми. Създава се нов празен списък, ако не се даде вход.

Код

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

Изход:

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

Методът с квадратни скоби е предпочитан пред вградената функция list(), защото е по-ясен и по-илюстративен.

Използване на разбиране на списък за инициализиране на списък

Можем да използваме подхода за разбиране на списъка, за да зададем параметрите по подразбиране на списъка. Състои се от израз, ограден в квадратни скоби, оператор for и незадължителен оператор if, който може или не може да последва. Всеки елемент, който искаме да добавим към списъка, може да бъде написан като израз. Изразът ще бъде 0, ако потребителят инициализира списъка с нули.

Разбирането на списъка е елегантен, ясен и добре познат подход за конструиране на списък, основан на итератор.

Код

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

Изход:

четене от csv файл в java
 The list was created using list comprehension: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Тази техника инициализира списъците много по-бързо от циклите for и while на Python.

Инициализирайте списък на Python с помощта на оператора *

Друг начин за инициализиране на списък в Python е използването на оператора *. Той създава списък с множество стойности. Синтаксисът за използване на този оператор е [елемент] * n. Тук n е броят пъти, които искаме да повторим елемента в списъка.

Този метод помага, когато искаме да инициализираме списък с предварително дефинирани дължини.

Код

частично производно на латекс
 # Python program to show how to use the * operator to initialize a list list_ = [5]*10 print (list) 

Изход:

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

Този метод е много ефективен и най-бързият начин за създаване на списък. По-късно в този урок ще сравним времето, необходимо за методите.

Единственият недостатък на използването на този оператор за инициализиране на списък на Python е, когато трябва да създадем 2D списък, тъй като този метод ще създаде само плитък списък, т.е. ще създаде единичен обект на списък и всички индекси ще се отнасят към него обект, който ще бъде много неудобен. Ето защо използваме разбиране на списъци, когато трябва да създадем 2D списъци.

Използване на for Loop и append()

Ще създадем празен списък и ще изпълним for цикъл, за да добавим елементи, използвайки функцията append() на списъка.

Код

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

Използване на цикъл While за инициализиране на списък

Можем да използваме цикъл while точно както използвахме цикъл for за инициализиране на списък.

Код

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

Времева сложност

Нека сега да видим колко време ще отнеме всеки от описаните подходи. Ще инициализираме списък от 100 000 елемента 1000 пъти. Ще изчислим средното време, необходимо на всеки метод за изпълнение на тази задача.

Код

примерен java код
 # 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:>

Можем да видим, че циклите for и while отнемат почти едно и също време за изпълнение. Цикълът for обаче е малко по-добър от цикъла while.

Разбирането на списък показва много по-добра производителност от циклите for и while. Той е 2-3 пъти по-бърз от циклите. По този начин разбирането на списъка е много по-ефективно от функцията append() на списъците.

Операторът * е показал най-добра производителност от всички четири метода.