לולאות בפייתון

להצהרות לולאה

Python משתמש בלולאת for כדי לחזור על רשימת אלמנטים. שלא כמו C או Java, המשתמשים בלולאה for כדי לשנות ערך בשלבים ולגשת למשהו כמו מערך המשתמש בערך זה.

לולאות מתבצעות על פני מבני נתונים מבוססי אוסף כמו רשימות, צמרות ומילונים.

התחביר הבסיסי הוא:

for value in list_of_values: # use value inside this block

באופן כללי, אתה יכול להשתמש בכל דבר כערך האיטרטור, שבו ניתן להקצות רשומות של ה- iterable. למשל, אתה יכול לפרוק צמרות מרשימת הצמרות:

list_of_tuples = [(1,2), (3,4)] for a, b in list_of_tuples: print("a:", a, "b:", b)

מצד שני, אתה יכול לולאה על כל דבר שאפשר לחזור עליו. אתה יכול להתקשר לפונקציה או להשתמש ברשימה מילולית.

for person in load_persons(): print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]: print("Give me a '{}'!".format(character))

כמה דרכים בהן משתמשים עבור לולאות:

חזר על פונקציית ה- range ()

for i in range(10): print(i)

במקום להיות פונקציה, טווח הוא למעשה סוג רצף בלתי משתנה. הפלט יכיל תוצאות מהגבול התחתון כלומר 0 לגבול העליון כלומר 10 אך לא כולל 10. כברירת מחדל הגבול התחתון או אינדקס ההתחלה מוגדרים לאפס. תְפוּקָה:

> 0 1 2 3 4 5 6 7 8 9 >

בנוסף, ניתן לציין את הגבול התחתון של הרצף ואפילו את שלב הרצף על ידי הוספת פרמטר שני ושלישי.

for i in range(4,10,2): #From 4 to 9 using a step of two print(i)

תְפוּקָה:

> 4 6 8 >

פונקציה xrange ()

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

דבר נוסף להוסיף. ב- Python 3.x, הפונקציה xrange כבר לא קיימת. פונקציית הטווח עושה כעת את מה ש- xrange עושה בפייתון 2.x

חזר על ערכים ברשימה או בכפולת

A = ["hello", 1, 65, "thank you", [2, 3]] for value in A: print(value)

תְפוּקָה:

> hello 1 65 thank you [2, 3] >

חזר על מקשים במילון (aka hashmap)

fruits_to_colors = {"apple": "#ff0000", "lemon": "#ffff00", "orange": "#ffa500"} for key in fruits_to_colors: print(key, fruits_to_colors[key])

תְפוּקָה:

> apple #ff0000 lemon #ffff00 orange #ffa500 >

בוטל מעל שתי רשימות באותו גודל בלולאה אחת עם פונקציית ה- zip ()

A = ["a", "b", "c"] B = ["a", "d", "e"] for a, b in zip(A, B): print a, b, a == b 

תְפוּקָה:

> a a True b d False c e False >

חזר על רשימה וקבל את האינדקס המתאים עם הפונקציה enumerate ()

A = ["this", "is", "something", "fun"] for index,word in enumerate(A): print(index, word)

תְפוּקָה:

> 0 this 1 is 2 something 3 fun >

מקרה נפוץ הוא איטרציה במילון:

for name, phonenumber in contacts.items(): print(name, "is reachable under", phonenumber)

אם אתה ממש צריך לגשת המדד הנוכחי של איטרציה שלך, אל לא להשתמש range(len(iterable))! זהו פרקטיקה גרועה ביותר ותביא לך הרבה צחקוקים ממפתחי פייתון בכירים. השתמש בפונקציה המובנית enumerate()במקום:

for index, item in enumerate(shopping_basket): print("Item", index, "is a", item)

הצהרות עבור / אחר

Pyhton מאפשר לך להשתמש אחר עם לולאות, במקרה אחר מבוצע כאשר אף אחד מהתנאים בגוף הלולאה לא היה מסופק. כדי להשתמש breakבשאר הדברים עלינו להשתמש בהצהרה כדי שנוכל לצאת מהלולאה במצב satsfied. אם לא נפרוץ, החלק האחר יבוצע.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday'] today = 'Saturday' for day in week_days: if day == today: print('today is a week day') break else: print('today is not a week day')

במקרה הנ"ל הפלט יהיה today is not a week dayמכיוון שהפסקה בתוך הלולאה לעולם לא תבוצע.

חזר על רשימה באמצעות פונקציית לולאה מוטבעת

נוכל לחזור ולבצע איור מוטבע באמצעות פיתון, למשל אם עלינו לרשום באותיות גדולות את כל המילים ברשימה, נוכל פשוט לבצע את הפעולות הבאות:

A = ["this", "is", "awesome", "shinning", "star"] UPPERCASE = [word.upper() for word in A] print (UPPERCASE)

תְפוּקָה:

> ['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR'] >

עוד מידע:

  • Python2 לתיעוד לולאה
  • Python3 לתיעוד לולאה