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] 

שימוש בפונקציה Built-in list() כדי לאתחל רשימה

הפונקציה list() של Python בונה את הרשימה, אובייקט שניתן לחזור עליו. לכן, זוהי דרך נוספת ליצור רשימת Python ריקה ללא כל נתונים בשפת קידוד זו.

כיצד להפעיל סקריפט בלינוקס

אובייקט איטרטור, רצף המאפשר איטרציה או מיכל יכולים להיות איטרציה. רשימה ריקה חדשה נבנית אם לא ניתן קלט.

קוד

scan.next 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_) 

תְפוּקָה:

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

טכניקה זו מאתחלת רשימות הרבה יותר מהר מאשר לולאות של Python for ו-while.

אתחול רשימת Python באמצעות אופרטור *

דרך נוספת לאתחל רשימה ב- Python היא שימוש באופרטור *. זה יוצר רשימה עם מספר ערכים. התחביר של שימוש באופרטור זה הוא [אלמנט] * n. כאן n הוא מספר הפעמים שאנו רוצים לחזור על האלמנט ברשימה.

לולאת java while

שיטה זו עוזרת כאשר אנו רוצים לאתחל רשימה של אורכים מוגדרים מראש.

קוד

 # 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 הוא כאשר עלינו ליצור רשימה דו-ממדית, שכן שיטה זו תיצור רשימה רדודה בלבד, כלומר, היא תיצור אובייקט רשימה בודד, וכל המדדים יתייחסו לכך. חפץ שיהיה מאוד לא נוח. זו הסיבה שאנו משתמשים בהבנת רשימות כאשר עלינו ליצור רשימות דו-ממדיות.

שימוש ב-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 Loop לאתחל רשימה

אנחנו יכולים להשתמש בלולאת while בדיוק כמו שהשתמשנו בלולאה כדי לאתחל רשימה.

קוד

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

מורכבות זמן

כעת נראה כמה זמן תארך כל אחת מהגישות המתוארות. נאתחל רשימה של 100000 אלמנטים 1000 פעמים. אנו נחשב את הזמן הממוצע שלוקח לכל שיטה לבצע משימה זו.

ארוך למיתר ג'אווה

קוד

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

אנחנו יכולים לראות שלולאות ולזמן לוקחות כמעט את אותו זמן ביצוע. עם זאת, עבור לולאה הוא קצת יותר טוב מאשר לולאת while.

הבנת הרשימה מראה ביצועים טובים בהרבה מאשר לולאות for ו-while. זה מהיר פי 2-3 מהלולאות. לפיכך, הבנת הרשימות יעילה הרבה יותר מהפונקציה append() של הרשימות.

האופרטור * הראה את הביצועים הטובים ביותר מבין כל ארבע השיטות.