القوائم في بايثون: كل ما تحتاج لمعرفته
تعتبر القوائم واحدة من الهياكل الأساسية في بايثون، وتوفر وسيلة مرنة لتخزين البيانات. تتيح لك القوائم إضافة عناصر، وإزالتها، وتعديلها بسهولة، مما يجعلها مثالية للعديد من التطبيقات. يمكنك أيضًا استخدام القوائم لتخزين أنواع مختلفة من البيانات، مثل الأعداد الصحيحة، والسلاسل النصية، وحتى القوائم الأخرى.
غرايم بيكوك هو خبير في نظام لينكس يتمتع بأكثر من 15 عامًا من الخبرة العملية. لقد عمل بشكل مكثف مع أنظمة أوبونتو، جنتو، آرتش لينكس، كيوبيز، وفيدورا، مما أكسبه مهارات عميقة في كل شيء من العمليات الروتينية في الطرفية إلى بناء أنظمة مخصصة للغاية.
الوثائق ليست صديقة للمبتدئين، وغالبًا ما تترك الدروس فجوات. قد تشعر أن تعلم بايثون أمر مرهق، لذا فأنت لست وحدك. لمعالجة ذلك، أعددت دليلًا موجزًا، بدون تعقيدات، لتعزيز مهاراتك في قوائم بايثون بسرعة - في أقل من 30 دقيقة أيضًا!
أساسيات القوائم: إنشاء العناصر والوصول إليها
إنشاء قائمة
لإنشاء قائمة، ببساطة قم بتعيين أقواس مربعة لمتغير:
my_shopping_list = []
يمكنك تهيئة القوائم بعناصر محددة مسبقًا:
my_shopping_list = ["milk", "bread", "sugar"]
يمكنك تخزين أنواع مختلفة في القوائم، وحتى قوائم أخرى:
my_shopping_list = ["milk", 1, [1, 2, 3], True]
التعيينات المباشرة
عندما تحتوي قائمة موجودة على عناصر، يمكننا تغيير تلك العناصر مباشرة:
my_shopping_list = ["milk", "bread", "sugar"] my_shopping_list[0] = "coffee" print(my_shopping_list) my_shopping_list[2] = "bananas" print(my_shopping_list)
الرقم بين الأقواس المربعة يسمى الفهرس، ونستخدمه للإشارة إلى العناصر الفردية في القائمة. العنصر الأول هو دائمًا 0، ثم الثاني هو 1، وهكذا.
الوصول إلى عناصر القائمة
الآن بعد أن تحتوي قائمتك على عناصر، سترغب في الوصول إليها:
my_shopping_list = ["milk", "bread", "sugar"] print(my_shopping_list[0]) print(my_shopping_list[1])
بالمقابل، يسمح لك بايثون بالوصول إلى العناصر بدءًا من النهاية باستخدام أرقام سالبة:
my_shopping_list = ["milk", "bread", "sugar"] print(my_shopping_list[-1]) print(my_shopping_list[-2])
التكرار عبر قائمة
التكرار في البرمجة العامة هو بناء يتكرر فيه إجراء ما N مرة. على سبيل المثال، إذا كانت القائمة تحتوي على ثلاثة عناصر، فسيتكرر التكرار عبرها، مما يتيح لنا تنفيذ إجراءات على كل عنصر. فيما يلي مثال على حلقة for:
my_shopping_list = ["milk", "bread", "sugar"] for item in my_shopping_list: print(item)
لكل عنصر في "my_shopping_list"، تقوم الحلقة بتعيينه إلى متغير "item". يمكننا ببساطة طباعة هذا المتغير لإظهار كيفية عمله.
استرجاع أجزاء من قائمة (المعروفة باسم الشريحة)
استرجاع أجزاء من قائمة يسمى الشريحة. الشريحة لا تغير القائمة الأصلية، بل تعيد قائمة جديدة بالعناصر المطلوبة.
إذا كنت ترغب في استرجاع أول عنصرين:
my_shopping_list = ["milk", "bread", "sugar"] print(my_shopping_list[0:2])
يمكنك أن ترى أننا نقدم الفهارس 0 و 2، مفصولة بنقطتين - إنه نفس القول صفر، حتى، ولكن لا تشمل، اثنان.
إذا لم تقدم رقمًا بعد أو قبل النقطتين، فإنه يعيد بقية القائمة. على سبيل المثال، الكود التالي يعيد العنصر الثاني وبقية القائمة:
my_shopping_list = ["milk", "bread", "sugar"] print(my_shopping_list[1:])
تعديل القائمة: إضافة، إزالة، وترتيب العناصر
لتغيير هيكل القائمة (وليس قيمها الحالية)، من الأسهل (وهو أفضل الممارسات) استخدام الطرق القياسية التي توفرها بايثون.
append()
تعني append إضافة عنصر إلى نهاية القائمة.
my_shopping_list = ["milk", "bread", "sugar"] my_shopping_list.append("bananas") print(my_shopping_list) my_shopping_list.append("cheese") print(my_shopping_list)
insert()
تعمل insert مثل append، إلا أنها تضيف العناصر إلى فهرس محدد.
my_shopping_list = ["milk", "bread", "sugar"] # 1 my_shopping_list.insert(0, "bananas") print(my_shopping_list) # 2 my_shopping_list.insert(2, "cheese") print(my_shopping_list)
remove()
قم بتزويد طريقة remove بعينة من العنصر الذي تريد حذفه، وستقوم بحذف أول حالة تصادفها.
my_shopping_list = ["milk", "bread", "sugar"] # 1 my_shopping_list.remove("milk") print(my_shopping_list) # 2 my_shopping_list.remove("sugar") print(my_shopping_list)
الترتيب
ترتيب قائمة في بايثون بسيط، ولديك خياران:
- في المكان: يعدل القائمة.
- خارج المكان: يعيد قائمة جديدة ولا يعدل القائمة الأصلية.
تعتبر طريقة sort في المكان، وتغير القائمة الأصلية.
my_shopping_list = ["milk", "bread", "sugar"] my_shopping_list.sort() print(my_shopping_list)
تعتبر طريقة sorted خارج المكان، ولا تغير القائمة الأصلية.
my_shopping_list = ["milk", "bread", "sugar"] my_sorted_list = sorted(my_shopping_list) print(my_shopping_list) # 1 print(my_sorted_list) # 2
استخدام معلومات القائمة لاتخاذ قرارات ذكية
التحقق من طول القائمة
ربما تكون أكثر العمليات شيوعًا على القوائم هي التحقق من طول القائمة باستخدام دالة len.
تفكيك القوائم
الحصول على العناصر من قائمة قد يكون أمرًا مزعجًا:
my_shopping_list = ["milk", "bread", "sugar"] milk = my_shopping_list[0] bread = my_shopping_list[1] sugar = my_shopping_list[2]
بدلاً من ذلك، يُفضل استخدام تفكيك القوائم، وهي طريقة نظيفة لاستخراج كل عنصر إلى متغيرات:
my_shopping_list = ["milk", "bread", "sugar"] milk, bread, sugar = my_shopping_list print(milk, bread, sugar)
النسخ العميق
عند استخدامك كائنات معقدة (مثل مثيلات الفئات، القوائم، إلخ)، من المهم أن تفهم أنها ليست قيمًا عادية. عندما تخزن كائنًا في متغير، فإنما هو في الحقيقة عنوان ذاكرة يشير إلى مكان في الذاكرة حيث يعيش الكائن.
تظهر التغييرات في كلا القائمتين لأن "milk_and_bread" هو كائن، وبيثون دائمًا يتعامل مع الكائنات من خلال عنوان ذاكرتها (المعروف أيضًا بالمرجع). عندما نضيف كائنًا إلى قائمة، في الحقيقة نحن نضيف مرجعًا إلى القائمة بدلاً من ذلك. الآن، عندما نغير الكائن، يتم عكس النتيجة في كل مكان.
السبب في أن هذا مهم هو أنه يمكن أن يكون مصدرًا للأخطاء. عندما ترى القيم المعقدة كمرجع، بدلاً من مجرد متغيرات، يكون من الأسهل تجنب هذه المشكلة. ليس دائمًا ممكنًا تجنب مثل هذه المشكلة، وأحد الحلول هو إجراء نسخ عميق للقائمة.
المواضيع التي تم تناولها هنا يجب أن تلبي معظم احتياجاتك للقوائم، لكنها لا تغطي الموضوع الأوسع في بايثون. لمتابعة التعلم، قد تجد مقالاتنا الأخرى مفيدة، مثل "ألعاب رائعة تعلمك بايثون" أو "نصوص بايثون الأساسية ولكن المفيدة للبدء".
التعليقات 0
سجل دخولك لإضافة تعليق
لا توجد تعليقات بعد. كن أول من يعلق!