פייתון/n-יות

מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.

קפיצה אל: ניווט, חיפוש

n-יות בפייתון דומות לרשימות בלתי ניתנות לשינוי.

תוכן עניינים

[עריכה] הגדרת n-יה

n-יה (tuple) בפייתון היא עצם מהצורה:

(<elements>)

כאשר elements היא איבר או יותר מופרדים על ידי פסיקים. לדוגמה,

(1, 2, 3)

היא n-יה של מספרים שלמים, ולעומת זאת

('Hello', 'world')

היא n-יה של מחרוזות. n-יה לא חייבת להיות הומוגנית. הנה n-יה שחלק מאיבריה מספרים, וחלקם מחרוזות:

('Hello', 1, 2.2, 'world')


{{{גודל}}}

כדאי לדעת:

  • המילה n-יה מסורבלת מאד. הn-יות הנפוצות ביותר בשימוש הן בעלות שני איברים או שלושה איברים. נקרא לn-יות אלו זוגות ושלישיות, בהתאמה.
  • על מנת ליצור n-יה עם איבר יחיד, יש להוסיף "פסיק": a=('one',).



[עריכה] דמיון ושוני לרשימות

n-יה דומה לרשימה בכך שניגשים לאיברי כל אחת מהן באותה צורה. לדוגמה:

>>> a = [1, 2, 3]
>>> b = (1, 2, 3)
>>> a[0]
1
>>> b[0]
1

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

>>> shopping=('milk','bread')
>>> 'juice' in shopping
False
>>> for product in shopping:
...     print product
...
milk
bread

השוני העיקרי הוא שרשימה היא עצם הניתן לשינוי, וn-יה איננה ניתנת לשינוי. לדוגמה:

>>> a = [1, 2, 3]
>>> b = (1, 2, 3)
>>> a[0] = 13
>>> b[0] = 13
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

[עריכה] המרות בין n-יות ורשימות

אפשר להמיר רשימה לn-יה על ידי כתיבת

tuple(<lst>)

כאשר lst היא רשימה. מצד שני, אפשר להמיר n-יה לרשימה על ידי כתיבת

list(<tp>)

כאשר tp היא n-יה.

לדוגמה:

>>> a = [1, 2, 3]
>>> b = (1, 2, 3)
>>> a_as_tuple = tuple(a)
>>> b_as_list = list(b)
>>> a_as_tuple
(1, 2, 3)
>>> b_as_list
[1, 2, 3]

[עריכה] n-יות וקישורים

בפייתון/במקום משתנים - עצמים ושמות, ראינו שאפשר לקשור שמות לעצמים. פייתון גם מאפשר לקשור n-יות של שמות לn-יות של עצמים. במקרה זה, כל שם מקושר לעצם המקביל אליו.

נתבונן, לדוגמה, בקוד הבא:

>>> (a, b) = (2, 3)

הקוד פשוט קושר את a ל-2, ואת b ל-3. הוא למעשה מהווה קיצור של הקוד הבא:

>>> a = 2
>>> b = 3

כאשר מקשרים n-יות של שמות לn-יות של עצמים, אין אפילו צורך לכתוב את הסוגריים המציינים את הn-יות. אפשר לכתוב את הקוד הקודם כך:

>>> a, b = 2, 3

כפי שראינו בקישור בו-זמני, אפשר להשתמש בזאת כדי להחליף קישורים:

>>> a = 'Hello'
>>> b = 'world!'
>>> a, b = b, a

[עריכה] n-יות ולולאות

כבר ראינו בלולאת for שאפשר לקשר שם לכל אחד מעצמי רשימה. אם איברי הרשימה הם זוגות (או למעשה n-יה כלשהי), השם יקושר לכל זוג. לדוגמה:

>>> a = [(2, 3), (4, 5), (10, 11)]
>>> for i in a:
...	print i
(2, 3)
(4, 5)
(10, 11)

מקשרת את השם a לכל זוג.

כאשר אנו יודעים בוודאות שכל איבר ברשימה הוא זוג (או למעשה n-יה כלשהי), נוכל להשתמש במה שראינו בn-יות וקישורים, ולקשור זוג שמות לכל זוג עצמים. לדוגמה:

>>> a = [(2, 3), (4, 5), (10, 11)]
>>> for (x, y) in a:
...	print x
2
3
10

מקשרת את הזוג (x, y) לכל זוג עצמים.

[עריכה] שימוש בפונקציות

שקול לדלג על נושא זה

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



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

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

def min_and_max(a, b)
	if a > b:
		return (b, a)
	else:
		return (a, b)


(x, y) = min_and_max(2, 3)

היות שלא חייבים לסמן את הסוגריים כאן, אפשר לכתוב זאת גם כך:

x, y = min_and_max(2, 3)

אגב, כפי שראינו באופרטור התניה, אם ברשותך מתרגם חדיש מספיק (גרסה 2.5 ומעלה), תוכל לכתוב את הפוקנציה בקיצור יותר כך:

def min_and_max(a, b)
	return (b, a) if a  > b else (a, b)


הפרק הקודם:
לולאות
n-יות הפרק הבא:
מילונים
כלים אישיים
יצירת ספר
  • הוספת דף ויקי
  • עזרה לאוספים