חיתוך רשימה באמצעות Take ו-Drop
חלק מהיחידה יסודות במסלול ה-Kotlin של Coddy. שיעור 80 מתוך 93.
Kotlin מספקת שתי שיטות פשוטות יותר לחילוץ חלקים מרשימה כשצריך רק איברים מתחילתה או מסופה: take() ו־drop().
המתודה take() מחזירה רשימה חדשה שמכילה את n האיברים הראשונים:
val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree) // [10, 20, 30]המתודה drop() עושה את ההפך. היא מדלגת על n האיברים הראשונים ומחזירה את השאר:
val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo) // [30, 40, 50]בניגוד ל־subList(), המתודות האלה מחזירות עותקים עצמאיים ולא תצוגות. הן גם קריאות יותר כשאתה פשוט רוצה את ״הכמה הראשונים״ או את ״כל מה שמלבד כמה הראשונים״ מבין האיברים.
אפשר לשלב את שתי השיטות כדי לחלץ מקטע אמצעי:
val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle) // [B, C, D]אם תבקשו יותר איברים ממה שקיימים, השיטות האלה פשוט יחזירו את מה שזמין בלי לזרוק שגיאה:
val short = listOf(1, 2)
println(short.take(10)) // [1, 2]
println(short.drop(10)) // []אתגר
בינוניתקבל רשימה של מספרים שלמים ושני מספרים: כמה איברים להשמיט מתחילת הרשימה וכמה איברים לקחת לאחר ההשמטה.
השתמש ב־drop() וב־take() יחד כדי לחלץ חלק אמצעי מהרשימה, ואז הדפס את האיברים שחולצו.
פורמט הקלט:
- השורה הראשונה: מספר שלם
nשמייצג את מספר האיברים nהשורות הבאות: מספרים שלמים שיש להוסיף לרשימה- השורה הבאה: מספר האיברים להשמיט מתחילת הרשימה
- השורה האחרונה: מספר האיברים לקחת לאחר ההשמטה
פורמט הפלט:
הדפס את הרשימה שהתקבלה בפורמט ברירת המחדל של רשימות ב־Kotlin.
דוגמה:
אם הרשימה היא [10, 20, 30, 40, 50, 60], מספר האיברים להשמיט הוא 2, ומספר האיברים לקחת הוא 3, הפלט צריך להיות:
[30, 40, 50]נסו בעצמכם
fun main() {
// קראו את מספר האיברים
val n = readLine()!!.toInt()
// קראו את איברי הרשימה
val list = mutableListOf<Int>()
for (i in 1..n) {
list.add(readLine()!!.toInt())
}
// קראו את הערכים של drop ו-take
val dropCount = readLine()!!.toInt()
val takeCount = readLine()!!.toInt()
// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-drop() וב-take() כדי לחלץ את החלק האמצעי
// הדפיסו את התוצאה
println(result)
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
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 אונליין