Professional Documents
Culture Documents
שבוע 3 - עוד מבני נתונים
שבוע 3 - עוד מבני נתונים
שבוע 3 - עוד מבני נתונים
rutbor@edu.hac.ac.il
TUPLE
Tupleהוא טיפוס של רשימה קבועה .השימוש שלו הוא עבור אחסון מידע שאין צורך
לשנותו )או שיש צורך לוודא שהוא לא ישתנה(
בהמשך נראה שפונקציה יכולה להחזיר רק איבר אחד .אבל ניתן להחזיר מפונקציה Tuple
המכיל מספר איברים ,וע"י כך להחזיר יותר מאיבר אחד מפונקציה.
TUPLE - CONTINUE
)>>> t = (1, 2, 3 יצירת ה Tupleנעשית בדיוק כמו
>>> t יצירת רשימה ,רק שבמקום סוגריים
)(1, 2, 3 מרובעות משתמשים בסוגריים
]>>> t[0
עגולות.
1
TUPLE אי אפשר לשנות
>>> t[0] = 2 נקבל,tupleאם ננסה לשנות איבר ב
הודעת שגיאה
Traceback (most recent call last):
מפתח הוא ייחודי .ז"א ,הוא יכול להופיע פעם אחת ולא יותר.
}{ = my_dict
my_dict[key1] = value1
מילונים
יצירת מילון ריק נעשית בעזרת סוגריים מסולסלות ריקות
}{ = >>> d
הוספת ערך הממופה למפתח 1
">>> d[1] = "Sunday
>>> d
}'{1: 'Sunday
]>>> d[1
''Sunday
עוד דוגמא למילון
cap = {}
cap['Israel'] = 'Jerusalem'
cap['USA'] = 'Washington'
cap['Russia'] = 'Moscow'
cap['France'] = 'Paris'
cap['England'] = 'London'
cap[‘Italy'] = 'Rome‘
צורות הצגה שונות של המילון
>>> cap
{'Israel': 'Jerusalem', 'USA': 'Washington', 'Russia': 'Moscow', 'France': 'Paris', 'England':
'London', 'Italy': 'Rome'}
>>> cap.keys()
dict_keys(['Israel', 'USA', 'Russia', 'France', 'England', 'Italy'])
>>> cap.values()
dict_values(['Jerusalem', 'Washington', 'Moscow', 'Paris', 'London', 'Rome'])
פונקציות שימושיות למילונים
>>> cap.items()
[('Israel', 'Jerusalem'), ('Italy', 'Rome'), ('USA', 'Washington'), ('France',
'Paris'), ('England', 'London'), ('Russia', 'Moscow')]
>>> len(cap)
6
מציאת ערך במילון בעזרת המפתח שלו
]'>>> cap['France
בשונה מרשימה ,בה ניגש לערך באמצעות
''Paris
]'>>> cap['Japan האינדקס שלו ,במילון ניגש לערך באמצעות
Traceback (most recent call last):
המפתח שלו.
>File "<stdin>", line 1, in <module
KeyError: Japan גישה לערך שלא קיים ,תיתן שגיאה.
שינוי ערך במילון
המפתחות במילון ייחודיים ולא ניתן לחזור על
cap={}
זה, כאשר ננסה לעשות זאת.מפתח פעמיים
cap['Israel'] = 'Jerusalem'
.ייתפס כשינוי הערך
cap['USA'] = 'Washington‘
… Output:
{'Israel': 'Jerusalem', 'USA': 'Washington',
print(cap)
…}
cap['USA'] = 'New York' {'Israel': 'Jerusalem', 'USA': 'New York',
print(cap) …}
SET
}>>> x = {1, 2, 3
setהיא כמו רשימה ,מלבד העובדה שאי-
>>> x
אפשר לאחסן פעמיים את אותו האיבר .כדי
}{1, 2, 3
ליצור קבוצה מרשימת איברים משתמשים
)>>> x.add(2
)>>> x.add(3 בסוגריים מסולסלים.
)>>> x.add(4
ל setאפשר להוסיף איברים .אם ננסה
>>> x
להוסיף איבר שקיים כבר ,לא יקרה כלום.
}{1, 2, 3, 4
מחיקת איבר ב .SETפונקציות REMOVEוDISCARD
2 1
הפתרון הוא להשתמש בפונקציית מ setאפשר למחוק איברים.
discardשמוחקת את האיבר רק אם ננסה למחוק איבר שאינו קיים,
במידה והוא קיים נקבל הודעת שגיאה:
)>>> x.discard(5 )>>> x.remove(1
)>>> x.discard(2 )>>> x.remove(5
>>> x Traceback (most recent call last):
}{3, 4 File "<stdin>", line 1, in
><module
KeyError: 5
>>> x
}{2, 3, 4
מחיקת ערך כפול מרשימה
>>> w = [1, 1, 1, 2, 3, 9, 2, 4, 3, 6]
>>> set(w)
{1, 2, 3, 4, 6, 9}
>>>basket
Output:
SET בIN פקודת
>>>'orange' in basket
True
>>>'crabgrass' in basket
False
ניתן לחפש גם ערך בתוך מילון בצורה הזו
>>> cap['France']
'Paris'
>>> cap['Japan']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: Japan
>>> 'Japan' in cap
False
>>> 'Israel' in cap
True
SORTED SET
To loop over a (uniqe) sequence in sorted order
ממבנה נתונים אחד לאחר
>>> set([1,2,3])
{1, 2, 3}
>>> tuple({5,6,7})
(5, 6, 7)
>>> list('hello')
['h', 'e', 'l', 'l', 'o’]
>>> dict([[1,2],[3,4]])
{1: 2, 3: 4}
>>> dict([(3,26),(4,44)])
{3: 26, 4: 44}
לולאות FOR
לולאת ה forתמיד עוברת על פריטים ברצף כלשהו לפי סדר הופעתם ברצף.
Output:
USA : New York
Russia : Moscow
France : Paris
England : London
RANGE
rangeיוצרת רצף מספרים עם ערך התחלתי ,ערך סופי וקפיצה.
range(10) 0123456789
range (5,15) 5 6 7 8 9 10 11 12 13 14 15
range(8,27,2) 8 10 12 14 16 18 20 22 24 26
range(48,20,-3) 48 45 42 39 36 33 30 27 24 21
RANGE
: נקבלrange אם נבדוק מהו הסוג של
>>> type(range(1,10))
<class 'range’>
>>>print(range(10))
range(0, 10)
>>>print(list(range(2, 8)))
[2, 3, 4, 5, 6, 7]
Output:
0
1
2
FOR WITH RANGE - 2
for num in range(3,6) :
print(num)
Output:
3
4
5
FOR WITH RANGE - 3
for num in range(3,13,4):
print(num)
Output:
3
7
11
מעבר על לולאה בעזרת אינדקס
שימו לב! זו צורת כתיבה שרגילים להשתמש בה ב ++Cאבל בפייתון זו לא הצורה הרגילה.
שימו לב שיש לכם סיבה טובה להשתמש בה כי אחרת זה יכול להיחשב כשגיאה!
BREAK, CONTINUE AND ELSE
for statement_list_1 :
if test1:
break Exit loop now; skip else
if test2:
continue Go to top of loop now
else:
statement_list_2 If we didn't hit a 'break'
BREAK AND CONTINUE STATEMENTS
break statement breaks out of the smallest enclosing for or while loop.
continue statement continues with the next iteration of the loop.
-- both statements work just like in C.
CONTINUE
digits = [0, 1, 5]
for i in digits:
print(i)
else:
Output:
print("No items left.") 0
1
5
No items left.
1רב
>>>print('coordinates: {xpoint},{ypoint}'.format(xpoint=4.7,
ypoint=2.1))
coordinates: 4.7,2.1
PASS STATEMENTS
The pass statement does nothing!!
It can be used when a statement is required syntactically but the
program requires no action.
For example: