الانتقال إلى المحتوى الرئيسي
الوحدة 3 · الدرس 1 من 49/36 في الدورة~12 min
دروس الوحدة (1/4)

القوائم

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

إنشاء قائمة

Python
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None]    # tipi diversi: legale ma raro

الوصول عن طريق الفهرس والشريحة

تبدأ الفهارس عند 0. يتم احتساب المؤشرات السالبة من اليمين:

Python
parole = ["a", "b", "c", "d"]
parole[0]    # 'a'
parole[-1]   # 'd'   (ultimo)
parole[1:3]  # ['b', 'c']   slice [start:stop]
parole[::-1] # ['d', 'c', 'b', 'a']   reverse

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

تعديل قائمة

Python
nums = [1, 2, 3]
nums.append(4)         # [1, 2, 3, 4]    aggiunge in fondo
nums.insert(0, 0)      # [0, 1, 2, 3, 4] inserisce in posizione
nums.extend([5, 6])    # [0, 1, 2, 3, 4, 5, 6]   concatena
nums.pop()             # 6   estrae ultimo
nums.pop(0)            # 0   estrae primo (più lento: O(n))
nums.remove(3)         # rimuove la PRIMA occorrenza di 3
nums[1] = 99           # sostituisce per indice

فرز

شكلان – من المهم التمييز بينهما:

Python
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort()          # MUTA nums in place, ritorna None
ordinati = sorted(nums)  # ritorna NUOVA lista, lascia nums invariata
nums.sort(reverse=True)
sorted(nums, key=lambda n: -n)   # ordinamento per chiave

الطول، العضوية، التكرار

Python
len(nums)              # quanti elementi
3 in nums              # True/False
for n in nums:
    print(n)

نسخ القائمة

a = b لا ينسخ — بل يقوم فقط بإنشاء اسم ثانٍ لنفس القائمة. ل نسخ في الواقع:

Python
copia = lista[:]            # slice completo
copia = list(lista)         # costruttore esplicito
copia = lista.copy()        # metodo

(هذه كلها نسخ سطحية — وتظل العناصر المتداخلة مشتركة.)

نسخ القوائم: احترس من المراجع

في Python، عندما تكتب list_b = list_a، فإنك لا تقوم بإنشاء نسخة: أنت تقوم فقط بإنشاء مرجع ثانٍ. سيؤدي تعديل list_b إلى تغيير list_a أيضًا. لإنشاء نسخة حقيقية مستقلة، يجب عليك كتابة list_b = list_a.copy() أو استخدام التقطيع الكامل: list_b = list_a[:].

جربه

تمرين#python.m3.l1.e1
المحاولات: 0جارٍ التحميل…

في ضوء القائمة `nums = [5, 2, 8, 1, 9, 3]`، أنشئ `first_three_sorted` مع أول ثلاثة أرقام من الأرقام مرتبة بترتيب تصاعدي. لا تقم بتعديل الأرقام.

جارٍ تحميل المحرر…
إظهار التلميح

الأعداد[:3] هي الثلاثة الأولى، ثم يتم فرزها (...).

الحل متاح بعد 3 من المحاولات

تمرين المراجعة

تمرين#python.m3.l1.e2
المحاولات: 0جارٍ التحميل…

بدءًا من `words = ['ciao']`، ألحق 'mondo' في النهاية، ثم أدخل '!' في البداية. تقييم "الكلمات".

جارٍ تحميل المحرر…
إظهار التلميح

إلحاق في الذيل، إدراج (0، ...) في الرأس.

الحل متاح بعد 3 من المحاولات

التحدي الإضافي

تمرين#python.m3.l1.e3
المحاولات: 0جارٍ التحميل…

Given the list `items = [10, 20, 30, 40]`, use slicing to create a new list `reversed_items` containing the same elements but in reverse order. Finally, evaluate `reversed_items`.

جارٍ تحميل المحرر…
إظهار التلميح

التقطيع بخطوة سلبية هو [::-1]. قم بتعيينه إلى Reverse_items.

الحل متاح بعد 3 من المحاولات