البرمجة

تفسير سلوك قائمة Python: تجنب تكرار القوائم الفرعية

في هذا السياق، يعود سبب هذا السلوك غير المتوقع إلى الطريقة التي تم فيها إنشاء القائمة الأولى. في السطر الأول من الكود، تم إنشاء قائمة تحتوي على قائمة فرعية فارغة باستخدام العملية “* 5”. يبدو أن هذا الأمر يخلق قائمة من القوائم الفرعية الخمسة، لكن في الحقيقة، يتم إنشاء خمس مراجع لنفس القائمة الفرعية، وليس خمس قوائم فرعية مستقلة.

عند تنفيذ list[0].append(1)، يتم إجراء التغيير في القائمة الفرعية الأولى فقط، ولكن لأن القوائم الفرعية الأخرى تشير جميعها إلى نفس المرجع، فإن أي تغيير في إحدى هذه القوائم يظهر في القوائم الأخرى أيضًا.

لتجنب هذا التصرف غير المتوقع، يمكنك استخدام تكرار لإنشاء قوائم فرعية فريدة. فيما يلي كيف يمكن تعديل الكود:

python
list = [[] for _ in range(5)] print(list) list[0].append(1) print(list)

باستخدام هذا التعديل، ستحصل على قوائم فرعية مستقلة وبالتالي لن يؤثر التعديل على إحدى القوائم في الأخرى.

المزيد من المعلومات

في سياق فهم تفاعل القائمة في الكود البرمجي السابق، يمكن تسليط الضوء على بعض المفاهيم الهامة في لغة البرمجة بايثون.

أولاً وقبل كل شيء، استخدمت علامة [] لإنشاء قائمة فارغة. في بايثون، يمكن استخدام هذه العلامة لإنشاء هياكل بيانات مثل القوائم والقواميس والمجموعات. القائمة هي هيكل بيانات مرن يمكن أن يحتوي على مجموعة من العناصر.

ثم تم استخدام عملية الضرب * لإعادة تكرار القائمة الفارغة [[]] خمس مرات، مما أدى إلى الحصول على قائمة تحتوي على خمس قوائم فرعية متشابهة.

السطر list[0].append(1) يقوم بإضافة العنصر 1 إلى القائمة الفرعية الأولى. وهنا يكمن الخطأ الذي حدث بسبب تكرار القائمة. عند تعديل القائمة الفرعية الأولى، تظهر التغييرات في كل القوائم الفرعية الأخرى بسبب المراجعة الخمس المشتركة.

تصحيح هذا الخطأ تم باستخدام التعبير list = [[] for _ in range(5)] الذي يستخدم التكرار لإنشاء قائمة فرعية جديدة في كل تكرار، مما يؤدي إلى الحصول على قوائم فرعية مستقلة وغير مرتبطة بنفس المرجع.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر