פייתון

נושא

אינדקס וחיתוך

גישה לתו, למקטע, ובקפיצות. ולמה אי אפשר לשנות.

מגיע מיחידות: 3, 6, 8

בעמוד הזההמפההצורותאיפה זה תופס אתכםלא רק מחרוזותבדיקה עצמית

המפה

>>> 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":

  1. מה זה s[1:4]?
  2. מה זה s[-2:]?
  3. איך מקבלים "pto"?

תשובות. 1: 'yth'. 2: 'on'. 3: s[::2].