تقسيم القوائم باستخدام 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)
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل - الجزء الأول
العوامل الحسابيةعامل باقي القسمةالإسناد المُعزَّزعوامل المقارنةمراجعة - الرياضيات البسيطة7أساسيات الإدخال والإخراج
دالة Printlnقوالب السلاسل النصيةإدخال ReadLineتحويل النوعمراجعة - السنوات حتى التقاعدمراجعة - صواب أم خطأ10الدوال
تعريف دالةالمعاملات والوسائطالقيم المُعادةالوسائط المُسمّاةالقيم الافتراضيةالدوال ذات التعبير الواحدمراجعة - دالة سيغمامراجعة - دالة التحقق2المتغيرات
val مقابل varاستنتاج النوعالأعدادالسلسلة النصيةالقيمة المنطقيةاصطلاحات التسميةمراجعة - تهيئة المتغيرات5المعاملات الجزء 2
المعاملات المنطقية الجزء 1المعاملات المنطقية الجزء 2المعاملات المنطقية الجزء 3المعامل الثلاثي مع تعبير Ifمراجعة - المنطق البسيط8حاسبة تقسيم الفاتورة
رسالة ترحيبيةالحصول على الإدخال14القوائم المتقدمة
تقسيم القوائم باستخدام SubListتقسيم القوائم باستخدام Take وDropعوامل التسلسلاتطريقة Containsمراجعة - البحث في صفحة3القابلية للقيمة الفارغة
ما هو الأمان من القيم الفارغةالأنواع القابلة للقيمة الفارغةعامل الاستدعاء الآمنعامل Elvisأساسيات تحدي الدوالتأكيد عدم كون القيمة فارغةمراجعة - الوصول الآمن9الحلقات
حلقة Forحلقة Whileحلقة Do-WhileBreakContinueالنطاقات في الحلقاتالحلقة المتداخلةمراجعة - المضروبمراجعة - الإدخال الديناميكيتدرّب بنفسك: Playground لـ Kotlin