تكرار السؤال: …
الإجابة المختصرة
استخدم list لتسلسل مرتب قابل للتعديل، و tuple لسجل ثابت الطول والمعنى، و set لفحص العضوية السريع ومنع التكرار، و dict لربط مفتاح بقيمة مع بحث سريع.
الشرح
اختيار البنية يعبّر عن العقد المطلوب: هل تحتاج ترتيبًا، أم بحثًا سريعًا، أم تفردًا، أم ربطًا بمفتاح؟ فحص العضوية x in list خطي O(n)، بينما في set و dict متوسطه O(1). منذ Python 3.7 يحافظ dict على ترتيب الإدراج كجزء من مواصفات اللغة، أما set فلا يضمن أي ترتيب. استخدم tuple للقيم المركبة التي لا تتغير مثل الإحداثيات أو مفاتيح dict المركبة.
مثال بالكود
allowed = {"admin", "editor"} # set: عضوية سريعة
point = (30.0, 31.2) # tuple: سجل ثابت
prices = {"apple": 3, "milk": 2} # dict: مفتاح ← قيمة
queue = ["a", "b"] # list: ترتيب قابل للتعديل
if role in allowed:
...أخطاء شائعة
- استخدام list للبحث المتكرر عن عناصر داخل حلقة، مما يحول الخوارزمية إلى O(n²).
- الاعتماد على ترتيب عناصر set عند الطباعة أو الإرجاع من API.