נושא
אינדקס וחיתוך
גישה לתו, למקטע, ובקפיצות. ולמה אי אפשר לשנות.
המפה
>>> word = "gaming"
| תו | g |
a |
m |
i |
n |
g |
|---|---|---|---|---|---|---|
| מההתחלה | 0 | 1 | 2 | 3 | 4 | 5 |
| מהסוף | -6 | -5 | -4 | -3 | -2 | -1 |
הצורות
| כותבים | מקבלים | למה |
|---|---|---|
word[0] |
'g' |
התו הראשון |
word[-1] |
'g' |
התו האחרון |
word[0:2] |
'ga' |
מ-0 עד 2, בלי 2 |
word[2:5] |
'min' |
שלושה תווים: 5 - 2 |
word[:2] |
'ga' |
בלי התחלה: מ-0 |
word[2:] |
'ming' |
בלי סוף: עד הסוף |
word[:] |
'gaming' |
הכל |
word[:-1] |
'gamin' |
הכל חוץ מהאחרון |
word[::2] |
'gmn' |
כל תו שני, מ-0 |
word[1::2] |
'aig' |
כל תו שני, מ-1 |
>>> word[2:5]
'min'
>>> word[::2]
'gmn'
איפה זה תופס אתכם
הסוף לא נכלל. זו הטעות הנפוצה ביותר בחיתוך.
מתחילים מאפס. התו הראשון הוא [0], והאחרון הוא [אורך פחות 1],
או פשוט [-1].
אינדקס מחוץ לגבול נותן שגיאה, וחיתוך מחוץ לגבול לא:
>>> word[10]
Traceback (most recent call last):
...
IndexError: string index out of range
>>> word[2:100]
'ming'
מחרוזת לא ניתנת לשינוי (immutable):
>>> word[0] = "G"
Traceback (most recent call last):
...
TypeError: 'str' object does not support item assignment
>>> word = "G" + word[1:]
>>> word
'Gaming'
לא רק מחרוזות
אותה גישה ואותו חיתוך עובדים על רשימה ועל טאפל, כי גם הם רצפים (יחידות 6 ו-8). ההבדל: ברשימה כן אפשר לשנות איבר.
>>> [10, 20, 30, 40][1:3]
[20, 30]
>>> (10, 20, 30)[-1]
30
>>> nums = [10, 20, 30]
>>> nums[0] = 99
>>> nums
[99, 20, 30]
בדיקה עצמית
עם s = "python":
- מה זה
s[1:4]? - מה זה
s[-2:]? - איך מקבלים
"pto"?
תשובות. 1: 'yth'. 2: 'on'. 3: s[::2].