الانتقال إلى المحتوى الرئيسي

كيفية نسخ صفيف في بيثون: طرق بسيطة

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

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

جديد _أراي = قديم _أراي[:]

يمكنك أيضا استخدام وظيفة النسخ المضمنة () ، والتي تنشئ نسخة سطحية من المصفوفة. تعني النسخة السطحية من المصفوفة أن المصفوفة الجديدة تشير إلى نفس الكائنات مثل المصفوفة الأصلية. ستنعكس أي تغييرات يتم إجراؤها على إحدى المصفوفات في الأخرى. مثال على استخدام وظيفة النسخ() :

جديد = قديم.نسخة()

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

استيراد نسخة

جديد = نسخة . ديبكوبي (أولد_أراي)

  1. نسخ صفيف في بيثون: طرق بسيطة
  2. 1. باستخدام شريحة
  3. 2. باستخدام وظيفة النسخ ()
  4. 3. باستخدام وظيفة ديبكوبي ()
  5. 4. باستخدام وظيفة القائمة ()
  6. 5. باستخدام وحدة نمباي
  7. باستخدام طريقة النسخ ()
  8. باستخدام القائمة()
  9. طريقة استخدام شريحة صفيف
  10. باستخدام وظيفة النسخ ()
  11. باستخدام وحدة النسخ
  12. إنشاء مصفوفة جديدة باستخدام حلقة
  13. سؤال وجواب
  14. كيف يمكنني نسخ مجموعة?
  15. كيف يمكنني إنشاء نسخة سطح مجموعة?
  16. كيف يمكنني إنشاء نسخة كاملة من مجموعة متعددة الأبعاد?

نسخ صفيف في بيثون: طرق بسيطة

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

1. باستخدام شريحة

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

مجموعة 1= [1, 2, 3, 4, 5]

صفيف 2 = صفيف 1 [:] # إنشاء نسخة كاملة من الصفيف

2. باستخدام وظيفة النسخ ()

في بيثون ، يمكنك استخدام المدمج في نسخة () وظيفة وحدة نسخ لنسخ مجموعة. تقوم هذه الوظيفة بإنشاء نسخة سطحية من المصفوفة.

استيراد نسخة

مجموعة 1= [1, 2, 3, 4, 5]

2 = نسخ . نسخ (صفيف 1) # إنشاء نسخة سطحية من الصفيف

3. باستخدام وظيفة ديبكوبي ()

إذا كان الصفيف يحتوي على صفائف أو كائنات داخلية ، وتريد إنشاء نسخة عميقة ، يمكنك استخدام وظيفة ديبكوبي () لوحدة النسخ. تقوم هذه الوظيفة بإنشاء نسخة كاملة من المصفوفة ، بما في ذلك جميع العناصر المتداخلة.

استيراد نسخة

مجموعة 1= [[1, 2], [3, 4], [5, 6]]

2 = نسخ . ديبكوبي (صفيف 1) # إنشاء نسخة عميقة من الصفيف

4. باستخدام وظيفة القائمة ()

لإنشاء نسخة من مصفوفة ، يمكنك أيضا استخدام وظيفة القائمة () ، وتمرير المصفوفة الأصلية كوسيطة.

مجموعة 1= [1, 2, 3, 4, 5]

صفيف 2 = قائمة (صفيف 1) # إنشاء نسخة من الصفيف باستخدام قائمة ()

5. باستخدام وحدة نمباي

إذا كنت تعمل مع صفائف كبيرة أو تحتاج إلى وظائف إضافية للعمل مع المصفوفات ، يمكنك استخدام وحدة نومبي. توفر الوحدة النمطية أساليب أكثر كفاءة للعمل مع المصفوفات ، بما في ذلك وظيفة النسخ () ، التي تنشئ نسخة من المصفوفة.

استيراد نومبي كما نب

الصف 1 = نب.صفيف([1, 2, 3, 4, 5])

2 = نب.نسخ (صفيف 1) # إنشاء نسخة من صفيف باستخدام وظيفة النسخ () من نومبي

في الختام ، هناك عدة طرق بسيطة لنسخ مصفوفة في بايثون. يعتمد اختيار الطريقة على المتطلبات المحددة للمشروع وهيكل المصفوفة. بغض النظر عن الطريقة المختارة ، يتيح لك نسخ مصفوفة في بايثون العمل مع البيانات دون تغيير القيم الأصلية.

باستخدام طريقة النسخ ()

هناك عدة طرق لنسخ صفيف في بيثون ، واحد منهم يستخدم طريقة النسخ (). تقوم طريقة النسخ () بإنشاء نسخة من المصفوفة الأصلية. في هذه الحالة ، لا تؤثر التغييرات التي تم إجراؤها على النسخة على المصفوفة الأصلية ، والعكس صحيح.

بناء جملة طريقة النسخ () كما يلي:

جديد = قديم.نسخة()

المصفوفات القديمة هي المصفوفة الأصلية التي نريد نسخها ، والمصفوفات الجديدة هي مصفوفة جديدة تم إنشاؤها بواسطة طريقة النسخ ().

مثال على استخدام طريقة النسخ ():

صفيف = [1, 2, 3, 4, 5]

جديد = مجموعة.نسخة()

طباعة (جديد)

# النتيجة: [1, 2, 3, 4, 5]

في هذا المثال ، أنشأنا مصفوفة صفيف ونسخها باستخدام طريقة النسخ () إلى مصفوفة جديدة. ثم عرضنا مجموعة جديدة وحصلت على النتيجة المتوقعة– [1, 2, 3, 4, 5].

من المهم ملاحظة أن طريقة النسخ () تنشئ نسخة سطحية من المصفوفة. هذا يعني أنه إذا كانت المصفوفة الأصلية تحتوي على صفائف أخرى (صفائف متداخلة) ، فستشير النسخة إلى نفس الكائنات مثل المصفوفة الأصلية. أي أن التغييرات في المصفوفات المتداخلة ستنعكس في كل من النسخة والعكس صحيح.

مثال:

صفيف = [[1, 2], [3, 4], [5, 6]]

جديد = مجموعة.نسخة()

[0] [0] = 10

طباعة (صفيف)

# النتيجة: [[10, 2], [3, 4], [5, 6]]

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

إذا كنت بحاجة إلى إنشاء نسخة عميقة من صفيف ، بما في ذلك جميع المصفوفات المتداخلة ، يجب عليك استخدام وحدة النسخ و ديبكوبي:

استيراد وظيفة النسخ

صفيف = [[1, 2], [3, 4], [5, 6]]

جديد = نسخة . ديبكوبي (صفيف)

[0] [0] = 10

طباعة (صفيف)

# النتيجة: [[1, 2], [3, 4], [5, 6]]

في هذا المثال ، استخدمنا وظيفة ديبكوبي () من وحدة النسخ لإنشاء نسخة عميقة من المصفوفة الأصلية. عند تغيير عنصر من المصفوفة المتداخلة الأولى في النسخة ، تظل المصفوفة الأصلية دون تغيير.

الآن لديك فهم لكيفية استخدام طريقة النسخ () لإنشاء نسخة من صفيف في بيثون.

باستخدام القائمة()

طريقة طريقة القائمة () هي طريقة سهلة لنسخ صفيف في بايثون. يسمح لك بإنشاء قائمة جديدة متطابقة في المحتوى وترتيب عناصر المصفوفة الحالية.

لاستخدام طريقة القائمة () ، اتبع الخطوات التالية:

  1. حدد اسم القائمة الجديدة وقم بتعيين قيمة مساوية لاستدعاء طريقة القائمة () مع تمرير المصفوفة الحالية كوسيطة.
  2. ستحتوي القائمة الجديدة على نسخة من عناصر المصفوفة الأصلية.

مثال على الكود:

صفيف = [1, 2, 3, 4, 5]

جديد = قائمة (صفيف)

طباعة (جديد)

نتيجة التنفيذ:

[1, 2, 3, 4, 5]

لا تعمل طريقة القائمة () فقط مع المصفوفات أحادية البعد ، ولكن أيضا مع المصفوفات متعددة الأبعاد. يحافظ على التسلسل الهرمي وترتيب عناصر المصفوفات المتداخلة. دعونا نعطي مثالا:

صفيف = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

جديد = قائمة (صفيف)

طباعة (جديد)

نتيجة التنفيذ:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

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

باستخدام شريحة صفيف

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

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

[1: 5 ]

بعد تنفيذ هذا الرمز ، سيخزن المتغير الجديد نسخة من عناصر مصفوفة آر ، بدءا من الفهرس 1 وحتى الفهرس 4 (لا يشمله). وبالتالي ، سيكون هناك 4 عناصر في المصفوفة النهائية.

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

يمكنك أيضا استخدام قيم الفهرس السالبة لتحديد شريحة من نهاية المصفوفة. على سبيل المثال ، إذا كنت بحاجة إلى نسخ آخر 3 عناصر من مجموعة أر ، يمكنك كتابة:

[-3:]

يمكن أيضا استخدام شريحة صفيف لنسخ مصفوفة بخطوة معينة. للقيام بذلك ، يمكنك تحديد الوسيطة الثالثة للشريحة – الخطوة. على سبيل المثال ، إذا كنت ترغب في نسخ كل عنصر ثان من صفيف آر ، يمكنك كتابة:

[::2]

في هذا المثال ، ستحتوي المصفوفة الجديدة على كل عنصر ثان من المصفوفة الأصلية.

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

باستخدام وظيفة النسخ ()

هناك عدة طرق لنسخ مصفوفة في بايثون ، واحدة منها هي استخدام وظيفة النسخ (). تقوم وظيفة النسخ () بإنشاء نسخة كاملة من المصفوفة الأصلية.

استخدام وظيفة النسخ () بسيط للغاية. يتم تمرير صفيف المصدر إلى إدخال الوظيفة ، ويقوم بإنشاء نسخة طبق الأصل منه.

مثال على استخدام وظيفة النسخ() :

الأصلي_أراي = [1, 2, 3, 4, 5]

نسخة مصورة = مصورة أصلية.نسخة()

طباعة) # [1, 2, 3, 4, 5]

في المثال أعلاه ، يحتوي المتغير الأصلي على المصفوفة الأصلية ، ويحتوي المتغير المنسوخ على نسخة منه تم إنشاؤها باستخدام وظيفة النسخ ().

من المهم ملاحظة أنه عند استخدام وظيفة النسخ () ، يتم إنشاء كائن جديد ، وليس مجرد إشارة إلى المصفوفة الأصلية. هذا يعني أن التغييرات التي تم إجراؤها على نسخة المصفوفة لن تؤثر على المصفوفة الأصلية.

إذا كانت المصفوفة المصدر تحتوي على كائنات متداخلة (على سبيل المثال ، صفائف أو قواميس أخرى) ، فإن وظيفة النسخ () ستنشئ أيضا نسخا من هذه الكائنات داخل نسخة المصفوفة.

يمكن أن تكون وظيفة النسخ () مفيدة جدا عندما تحتاج إلى العمل مع مصفوفة ، ولكن يجب أن تكون التغييرات التي تم إجراؤها عليها مستقلة عن المصفوفة الأصلية. يمكن استخدامه أيضا لإنشاء نسخ "عميقة" من مصفوفة تحتوي على كائنات متداخلة.

باستخدام وحدة النسخ

.

ينفذ نسخة سطحية من الكائن ، أي أنه ينشئ كائنا جديدا مساويا للكائن الأصلي ، ولكن مع مراجع مختلفة للعناصر.

:

استيراد نسخة

القائمة الأصلية = [1, 2, 3, 4, 5]

نسخ_قائمة = نسخ.نسخة (القائمة الأصلية)

طباعة (نسخ_قائمة)

النتيجة:

[1, 2, 3, 4, 5]

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

:

استيراد نسخة

المرسوم الأصلي = {أ': [1, 2, 3], 'باء': [4, 5, 6]}

نسخة = نسخة . نسخة عميقة (مرسوم أصلي)

طباعة

النتيجة:

{'أ': [1 ، 2 ، 3] ، 'ب': [4, 5, 6]}

مفيد بشكل خاص لنسخ الكائنات المعقدة مثل قوائم القوائم أو القواميس مع القواميس. يضمن أن تغيير النسخة لن يؤثر على الكائن الأصلي.

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

إنشاء مصفوفة جديدة باستخدام حلقة

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

مثال:

آر = [1, 2, 3, 4, 5]

جديد = []

لعنصر في آر:

جديد.إلحاق (عنصر)

طباعة (جديد)

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

يمكنك أيضا استخدام حلقة أثناء إنشاء مصفوفة جديدة.:

آر = [1, 2, 3, 4, 5]

جديد = []

أنا = 0

بينما أنا < لين (آر):

جديد.إلحاق (ر [ط])

أنا + = 1

طباعة (جديد)

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

يمكن أن يكون استخدام حلقة لإنشاء مصفوفة جديدة مفيدا إذا كنت بحاجة إلى تغيير أو تصفية القيم بطريقة ما من المصفوفة الأصلية.

سؤال وجواب

كيف يمكنني نسخ مجموعة?

هناك عدة طرق لنسخ مصفوفة في بايثون. واحدة من أسهل الطرق هي استخدام طريقة النسخ (). على سبيل المثال: صف جديد = صف قديم.نسخة (). يمكنك أيضا استخدام الشرائح. على سبيل المثال: جديد = قديم [:]. يمكنك أيضا استخدام وظيفة القائمة (). على سبيل المثال: جديد = قائمة(قديم). كل هذه الطرق تخلق نسخة مستقلة تماما من المصفوفة.

كيف يمكنني إنشاء نسخة سطح مجموعة?

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

كيف يمكنني إنشاء نسخة كاملة من مجموعة متعددة الأبعاد?

لإنشاء نسخة كاملة من مصفوفة متعددة الأبعاد ، يمكنك استخدام وظيفة ديبكوبي () من وحدة النسخ. على سبيل المثال: استيراد نسخة جديدة = نسخ . ديبكوبي (أولد_أراي). وظيفة ديبكوبي () يخلق نسخة مستقلة تماما من مجموعة ، بما في ذلك جميع العناصر المتداخلة. وبالتالي ، لن تنعكس التغييرات التي تم إجراؤها في المصفوفة الجديدة في المصفوفة الأصلية.