تقنية

شريحة array في بايثون: نسخة أم عرض مشترك؟

تعديل النسخة يبقي الأصل وتعديل العرض يغيره
الأصل بعد كل خطوة. [1] [2]

حدد هدف التعديل. [1] [2]

الخلاصة السريعة

شريحة array نسخة؛ شريحة memoryview عرض للمخزن. [1] [2]

  • تعديل c إلى 7 يترك الأصل [4,9,2]. [1] [2]
  • تعديل v إلى 8 يغير الأصل إلى [8,9,2]. [1] [2]
  • العرض هنا قابل للكتابة؛ ليس كل مخزن كذلك. [1] [2]
  • memoryview(a[:2]) يعرض النسخة؛ أنشئ العرض قبل تقطيعه. [1] [2]
  • اختبرنا 3.12.14، مصفوفة أعداد صحيحة أحادية البعد؛ لا نقيس الأداء. [1] [2]

المثال

from array import array
a=array('i',[4,9,2])
c=a[:2]
v=memoryview(a)[:2]
c[0]=7
print(list(a))
v[0]=8
print(list(a))

[1] [2]

المخرجان: [4,9,2]، ثم [8,9,2]. [1] [2]

الهدف

النسخة تحمل بيانات مستقلة؛ العرض يصل إلى بيانات الأصل دون نسخها. [1] [2]

أنشئ العرض من a ثم قطّعه؛ العكس يصنع نسخة أولًا. [1] [2]

العرض من الأصل والعرض من النسخة يختلف هدفهما
ترتيب الإنشاء مهم. [1] [2]

الحدود

نبدل عنصرًا داخل مخزن قابل للكتابة؛ لا نعيد تحجيم العرض. ليست مقارنة لسرعة العمليات. [1] [2]

المراجع

  1. Python: المصفوفات الرقمية
  2. Python: العروض والنسخ
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.