قائمة Python الفريدة - كيفية الحصول على جميع القيم الفريدة في قائمة أو مصفوفة

لنفترض أن لديك قائمة تحتوي على أرقام مكررة:

numbers = [1, 1, 2, 3, 3, 4] 

لكنك تريد قائمة أرقام فريدة .

unique_numbers = [1, 2, 3, 4] 

توجد عدة طرق للحصول على قائمة بالقيم الفريدة في بايثون. هذا المقال سيريك كيف.

الخيار 1 - استخدام مجموعة للحصول على عناصر فريدة

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

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

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

numbers = [1, 2, 2, 3, 3, 4, 5] def get_unique_numbers(numbers): list_of_unique_numbers = [] unique_numbers = set(numbers) for number in unique_numbers: list_of_unique_numbers.append(number) return list_of_unique_numbers print(get_unique_numbers(numbers)) # result: [1, 2, 3, 4, 5] 

دعنا نلقي نظرة فاحصة على ما يحدث. أعطيت قائمة بالأرقام ، numbers. أقوم بتمرير هذه القائمة إلى الوظيفة ، get_unique_numbers.

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

unique_numbers = set(numbers) 

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

for number in unique_numbers: list_of_unique_numbers.append(number) 

في كل تكرار أقوم بإضافة الرقم الحالي إلى القائمة ، list_of_unique_numbers. أخيرًا ، أعيد هذه القائمة في نهاية البرنامج.

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

نهج أقصر مع مجموعة

يمكن تكثيف جميع التعليمات البرمجية المكتوبة في المثال أعلاه في سطر واحد بمساعدة وظائف Python المضمنة.

numbers = [1, 2, 2, 3, 3, 4, 5] unique_numbers = list(set(numbers)) print(unique_numbers) # Result: [1, 2, 3, 4, 5] 

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

unique_numbers = list(set(numbers)) 

من المفيد التفكير "من الداخل إلى الخارج" عند قراءة الكود أعلاه. يحصل تقييم رمز الأعمق الأول: set(numbers). ثم، يتم تقييم رمز الأبعد: list(set(numbers)).

الخيار 2 - استخدام التكرار لتحديد القيم الفريدة

التكرار هو طريقة أخرى للنظر فيها.

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

لنلقِ نظرة على طريقتين لاستخدام التكرار للحصول على القيم الفريدة في قائمة ، بدءًا بالقيم الأكثر تفصيلاً.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number in unique: continue else: unique.append(number) return unique print(get_unique_numbers(numbers)) # Result: [20, 30, 40] 

إليك ما يحدث في كل خطوة على الطريق. أولاً ، أعطيت قائمة بالأرقام ، numbers. أقوم بتمرير هذه القائمة إلى وظيفتي ، get_unique_numbers.

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

أستخدم حلقة for للتكرار خلال كل رقم في numbersالقائمة.

 for number in numbers: if number in unique: continue else: unique.append(number) 

يتحقق الشرط داخل الحلقة لمعرفة ما إذا كان رقم التكرار الحالي موجودًا في uniqueالقائمة. إذا كان الأمر كذلك ، تستمر الحلقة في التكرار التالي. خلاف ذلك ، يتم إضافة الرقم إلى هذه القائمة.

هذه هي النقطة المهمة: تتم إضافة الأرقام الفريدة فقط. بمجرد اكتمال الحلقة ، أعود uniqueالتي تحتوي على جميع الأرقام الفريدة.

نهج أقصر مع التكرار

هناك طريقة أخرى لكتابة الدالة في عدد أقل من الأسطر.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number not in unique: unique.append(number) return unique #Result: [20, 30, 40] 

الفرق هو الشرطي. هذه المرة ، تم إعداده لقراءة مثل هذا: إذا لم يكن الرقم موجودًا unique، فقم بإضافته.

if number not in unique: unique.append(number) 

خلاف ذلك ، ستنتقل الحلقة إلى الرقم التالي في القائمة ، numbers.

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

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

أكتب عن تعلم البرمجة ، وأفضل الطرق للقيام بذلك على موقع amymhaddad.com. تابعوني على تويتر:amymhaddad.