Python תומך בטכניקות לולאה שונות על ידי פונקציות מובנות מסוימות במכולות עוקבות שונות. שיטות אלו שימושיות בעיקר בתכנות תחרותי וגם בפרויקטים שונים הדורשים טכניקה ספציפית עם לולאות השומרות על המבנה הכללי של הקוד. הרבה זמן ושטח זיכרון נחסכו מכיוון שאין צורך להכריז על המשתנים הנוספים עליהם אנו מצהירים בגישה המסורתית של לולאות.
איפה משתמשים בהם?
טכניקות שונות של לולאה שימושיות בעיקר במקומות שבהם איננו צריכים לתפעל בפועל את המבנה והסדר של הקונטיינרים הכוללים אלא רק להדפיס את האלמנטים עבור מופע חד פעמי, לא מתרחש שינוי במקום במיכל. זה יכול לשמש גם במקרים כדי לחסוך זמן.
טכניקות לולאה שונות באמצעות מבני נתונים של Python הן:
דרך 1: שימוש ב-enumerate(): enumerate() משמש ללולאה דרך הקונטיינרים המדפיסים את מספר האינדקס יחד עם הערך הקיים באינדקס המסוים הזה.
Python3
# python code to demonstrate working of enumerate() for key value in enumerate(['The' 'Big' 'Bang' 'Theory']): print(key value)
תְפוּקָה:
להפוך את סקריפט המעטפת לניתן להפעלה
0 ThePython3
1 Big
2 Bang
3 Theory
# python code to demonstrate working of enumerate() for key value in enumerate(['Geeks' 'for' 'Geeks' 'is' 'the' 'Best' 'Coding' 'Platform']): print(value end=' ')
תְפוּקָה:
Geeks for Geeks is the Best Coding Platform דרך 2: שימוש ב-zip(): zip() משמש לשילוב של 2 או יותר מיכלים המדפיסים את הערכים ברצף. הלולאה קיימת רק עד שהמיכל הקטן יותר מסתיים. ניתן למצוא הסבר מפורט של zip() ו-enumerate(). כָּאן .
דוגמה 1: שני סוגי נתונים שונים (רשימה)
Python# python code to demonstrate working of zip() names = ['Deep' 'Sachin' 'Simran'] # list ages = (24 27 25) # tuple for name age in zip(names ages): print('Name: ' name) print('Age: ' age) print()
תְפוּקָה
('Name: ' 'Deep') ('Age: ' 24) () ('Name: ' 'Sachin') ('Age: ' 27) () ('Name: ' 'Simran') ('Age: ' 25) () דוגמה 2: שני רשימת סוגי נתונים דומים
Python3# python code to demonstrate working of zip() # initializing list questions = ['name' 'colour' 'shape'] answers = ['apple' 'red' 'a circle'] # using zip() to combine two containers # and print values for question answer in zip(questions answers): print('What is your {0}? I am {1}.'.format(question answer))
תְפוּקָה:
What is your name? I am apple.
What is your color? I am red.
What is your shape? I am a circle.
דרך 3: שימוש ב-iteritem(): iteritems() משמש ללולאה דרך המילון ומדפיס את צמד המפתח-ערך המילון ברצף אשר משמש לפני גרסת Python 3.
דרך 4: שימוש בפריטים(): items() מבצעת את המשימה הדומה במילון כמו iteritems() אך יש להם חסרונות מסוימים בהשוואה ל-iteritems().
- זה כן גוזל זמן רב . לקרוא לזה במילונים גדולים גוזלת די הרבה זמן.
- זה לוקח א הרבה זיכרון . לפעמים לוקח זיכרון כפול כשקוראים למילון.
דוגמה 1:
Python3# python code to demonstrate working of items() d = {'geeks': 'for' 'only': 'geeks'} # iteritems() is renamed to items() in python3 # using items to print the dictionary key-value pair print('The key value pair using items is : ') for i j in d.items(): print(i j)
תְפוּקָה:
פונקציית אב טיפוס c++
The key value pair using iteritems is :
geeks for
only geeks
דוגמה 2:
Python3# python code to demonstrate working of items() king = {'Ashoka': 'The Great' 'Chandragupta': 'The Maurya' 'Modi': 'The Changer'} # using items to print the dictionary key-value pair for key value in king.items(): print(key value)
תְפוּקָה
Ashoka The Great Chandragupta The Maurya Modi The Changer
דרך 5: שימוש ב-sorted(): sorted() משמש להדפסת מיכל ממוין לפי סדר . זֶה לא ממיין את המיכל אלא רק מדפיס את המיכל בסדר ממוין עבור מופע אחד. השימוש ב ניתן לשלב את set() כדי להסיר כפילויות התרחשויות.
דוגמה 1:
Python3# python code to demonstrate working of sorted() # initializing list lis = [1 3 5 6 2 1 3] # using sorted() to print the list in sorted order print('The list in sorted order is : ') for i in sorted(lis): print(i end=' ') print('r') # using sorted() and set() to print the list in sorted order # use of set() removes duplicates. print('The list in sorted order (without duplicates) is : ') for i in sorted(set(lis)): print(i end=' ')
תְפוּקָה:
שור מול שור
The li st in sorted order is :
1 1 2 3 3 5 6
The list in sorted order (without duplicates) is :
1 2 3 5 6
דוגמה 2:
Python3# python code to demonstrate working of sorted() # initializing list basket = ['guave' 'orange' 'apple' 'pear' 'guava' 'banana' 'grape'] # using sorted() and set() to print the list # in sorted order for fruit in sorted(set(basket)): print(fruit)
תְפוּקָה:
apple
banana
grape
guava
guave
orange
pear
דרך 6: באמצעות reversed(): reversed() משמש להדפסת הערכים של את מיכל בסדר הפוך . זה לא משקף שינויים כלשהם ברשימה המקורית
דוגמה 1:
Python3# python code to demonstrate working of reversed() # initializing list lis = [1 3 5 6 2 1 3] # using reversed() to print the list in reversed order print('The list in reversed order is : ') for i in reversed(lis): print(i end=' ')
תְפוּקָה:
The list in reversed order is :
3 1 2 6 5 3 1
דוגמה 2:
כמה גדול המסך שליPython3
# python code to demonstrate working of reversed() # using reversed() to print in reverse order for i in reversed(range(1 10 3)): print(i)
תְפוּקָה:
7
4
1
- טכניקות אלו מהירות לשימוש ומפחיתות את מאמץ הקידוד. עבור לולאות while צריך לשנות את כל המבנה של המיכל.
- טכניקות לולאה אלו אינן דורשות שינויים מבניים במיכל. יש להם מילות מפתח שמציגות את מטרת השימוש המדויקת. בעוד שלא ניתן לבצע תחזיות מוקדמות או ניחושים בלולאת בעוד, כלומר לא בקלות להבין את המטרה במבט חטוף.
- טכניקת לולאה הופכת את הקוד לתמציתי יותר מאשר שימוש עבור ותוך כדי לולאה.
טכניקות לולאה בזמן לולאה באמצעות הצהרות if:
בדוגמה זו אנו משתמשים בלולאת while כדי להגדיל משתנה שנקרא count. בתוך הלולאה אנו משתמשים במשפט if כדי לבדוק אם count שווה ל-3. אם כן אנו מדפיסים הודעה.
גִישָׁה:
אתחול משתנה ספירה ל-0
השתמש בלולאת while כדי לבצע שוב ושוב גוש קוד כל עוד הספירה קטנה מ-5
בתוך הלולאה השתמש במשפט if כדי לבדוק אם הספירה שווה ל-3
אם הספירה היא 3 הדפס הודעה
הגדל את הספירה ב-1 בסוף כל איטרציה
# Example variable count = 0 # Loop while count is less than 5 while count < 5: if count == 3: print('Count is 3') count += 1
תְפוּקָה
Count is 3
מורכבות הזמן: O(n) כאשר n הוא מספר האיטרציות הנדרשות כדי שהספירה תגיע ל-5.
רווח עזר: O(1) מכיוון שרק משתנה אחד (ספירה) משמש לאורך הקוד.
צור חידון