חיתוך רשימה באמצעות SubList
חלק מהיחידה יסודות במסלול ה-Kotlin של Coddy. שיעור 79 מתוך 93.
לפעמים צריך לחלץ חלק מרשימה במקום לעבוד עם האוסף כולו. המתודה subList() מאפשרת ליצור תצוגה של טווח מסוים של איברים מתוך רשימה קיימת.
המתודה subList() מקבלת שני פרמטרים: אינדקס ההתחלה (כולל) ואינדקס הסיום (לא כולל). פירוש הדבר שהאיבר באינדקס ההתחלה נכלל, אבל האיבר באינדקס הסיום לא נכלל:
val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice) // [20, 30, 40]בדוגמה הזו, subList(1, 4) מחלץ איברים מאינדקס 1 ועד (אך לא כולל) אינדקס 4. כך מתקבלים האיברים השני, השלישי והרביעי.
תת-הרשימה שנוצרת היא תצוגה של הרשימה המקורית, ולא עותק. חשוב להבין זאת כשעובדים עם רשימות שניתן לשנות, מכיוון ששינויים ברשימה המקורית יכולים להשפיע על תת-הרשימה.
ברוב המקרים שבהם משתמשים ברשימות לקריאה בלבד, אפשר פשוט להשתמש בו כדי לגשת לטווח של איברים:
val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek) // [Tue, Wed, Thu]אתגר
בינוניתקבלו רשימה של מספרים שלמים ושני אינדקסים שמייצגים טווח. חלצו תת־רשימה באמצעות subList() והדפיסו את סכום האיברים שחולצו.
פורמט הקלט:
- שורה ראשונה: מספר שלם
nשמייצג את מספר האיברים nהשורות הבאות: מספרים שלמים שיש להוסיף לרשימה- השורה הבאה: אינדקס ההתחלה (כולל)
- השורה האחרונה: אינדקס הסיום (לא כולל)
פורמט הפלט:
הדפיסו את סכום האיברים בתת־הרשימה שחולצה.
דוגמה:
אם הרשימה היא [5, 10, 15, 20, 25], אינדקס ההתחלה הוא 1 ואינדקס הסיום הוא 4, תת־הרשימה תהיה [10, 15, 20] והפלט צריך להיות 45.
נסו בעצמכם
fun main() {
val n = readLine()!!.toInt()
val list = mutableListOf<Int>()
repeat(n) {
list.add(readLine()!!.toInt())
}
val startIndex = readLine()!!.toInt()
val endIndex = readLine()!!.toInt()
// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-subList() כדי לחלץ איברים מ-startIndex עד endIndex
// חשבו והדפיסו את סכום האיברים שחולצו
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7קלט/פלט בסיסיים
פונקציית Printlnתבניות מחרוזתקלט באמצעות ReadLineהמרת טיפוסיםסיכום – שנים עד הפרישהסיכום – אמת או שקר10פונקציות
הכרזה על פונקציהפרמטרים וארגומנטיםערכי החזרהארגומנטים בעלי שםערכי ברירת מחדלפונקציות עם ביטוי יחידחזרה – פונקציית Sigmaחזרה – פונקציית אימות5אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2אופרטורים לוגיים חלק 3אופרטור טרנרי עם ביטוי ifסיכום – לוגיקה פשוטה14רשימות: נושאים מתקדמים
חיתוך רשימה באמצעות SubListחיתוך רשימה באמצעות Take ו-Dropאופרטורים של רצפיםהמתודה Containsסיכום – חיפוש בדף3אפשרות לערך null
מהי בטיחות מפני nullטיפוסים שיכולים להיות nullאופרטור קריאה בטוחהאופרטור אלביסיסודות אתגר הפונקציותאופרטור ההבטחה לאי־nullסיכום – גישה בטוחה9לולאות
לולאת forלולאת whileלולאת do-whilebreakcontinueטווחים בלולאותלולאה מקוננתחזרה – עצרתחזרה – קלט דינמיתרגלו בעצמכם: Kotlin אונליין