what is the difference between :
list = list + [5,6]
and
list += [5,6]
what is the difference between :
list = list + [5,6]
and
list += [5,6]
لا يوجد فرق في النتيجة الاثنان يعطيان نفس النتيجة
لكن الثانية هي فقط اختصار للاولى
يمكنك تجربة الطريقة الاولى بكتابة التالي:
liste =[1,2,3]
liste = liste + [5,6]
print(liste)
و تجربة الطريقة الثانية بكتابة:
liste =[1,2,3]
liste += [5,6]
print(liste)
ستجدين نفس النتيجة
لكن في حالات أخرى متقدمة يمكن ان يوجد هناك فرق
list0 = [1, 2, 3]
print(id(list0))
list1 = list0 + [5,6]
print(id(list1))
list1 += [5,6]
print(id(list1))
في هذا الكود مثلا فإن طريقة
list = list +
تصنع list جديدة
أي object جديد
و تنسخ كل العناصر من ال list السابقة
يمكنك تجريب الكود
هذا ما كنت افهمه ولكن في هذا الكود اختلف الناتج :
list1 = [1,2,3,4,5]
list2 = [1,2,3,4,5]
def proc(mylist):
mylist = mylist + [6, 7]
def proc2(mylist):
mylist.append(6)
mylist.append(7)
print list1
proc(list1)
print list1
print list2
proc2(list2)
print list2
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7]
list3 = [1,2,3,4,5]
def proc3(mylist):
mylist += [6,7]
print
print list3
proc3(list3)
print list3
the output :
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7]
نعم أحسنت
هذا ما فسرته في المثال الثاني لكن باستعمال index عناصر القوائم
و في مثالك أيضا النتيجة تختلف ايضا عند مناداة دالة تحتوي على قائمة فإن النتيجة ستعطي قائمة تحتوي على عناصر القائمة التي في الدالة و عناصر القائمة الجديدة.
رائع @asmaa_salih
ا @asmaa_salih
عند استعمال الاختصار += على القوائم فإن بايثون تحت البساط يستدعي extend
أي ان هذا الكود
list += [5, 7]
هي نفسها
list.extend([5, 7])
لذلك في القوائم يجب ان نفرق بين
list = list + something
و
list += something