5 הדרכים הטובות ביותר למצוא אלמנטים נפוצים בשני מערכים ב- Python – היו בצד הנכון של השינוי

פרסומת
X-ray_Promo1


💡 ניסוח בעיה: כאשר עובדים עם נתונים ב-Python, משימה נפוצה היא למצוא את ההצטלבות של שני מערכים – במילים אחרות, למצוא אלמנטים המשותפים לשני המערכים. לדוגמה, בהינתן שני מערכים array1 = [1, 2, 3, 4] ו array2 = [2, 4, 6, 8]הפלט הרצוי יהיה [2, 4]המייצג את האלמנטים המשותפים בשני המערכים.

פרסומת

שיטה 1: שימוש ב-Set Intersection

הגדרת צומת ב-Python היא דרך יעילה למצוא את האלמנטים המשותפים בין שני מערכים. על ידי המרת מערכים לסטים ושימוש ב- & מפעיל או intersection() בשיטה, נוכל להשיג את הפריטים המשותפים במהירות. שיטה זו שימושית במיוחד עבור מערכי נתונים גדולים בשל המהירות והפשטות שלה.

הנה דוגמה:

array1 = [1, 2, 3, 4]
array2 = [2, 4, 6, 8]
common_elements = list(set(array1) & set(array2))
print(common_elements)

תְפוּקָה:

🖨️ קורס אקדמיה מומלץ: פיתוח קולי ראשון: בניית אפליקציות Python חדשניות המופעלות על ידי OpenAI Whisper ⭐⭐⭐⭐⭐

[2, 4]

קטע קוד זה ממיר תחילה את שני המערכים לקבוצות ולאחר מכן משתמש באופרטור הצומת כדי למצוא אלמנטים משותפים. לאחר מכן התוצאה מומרת חזרה לרשימה לשימוש נוסף או לתצוגה.

שיטה 2: שימוש בלולאה ובתנאי

מעבר דרך מערך אחד ובדיקה אם האלמנטים שלו קיימים במערך השני היא גישה פשוטה. למרות שאינה היעילה ביותר עבור מערכי נתונים גדולים, שיטה זו קלה להבנה ועובדת ללא פונקציות נוספות.

הנה דוגמה:

array1 = [1, 2, 3, 4]
array2 = [2, 4, 6, 8]
common_elements = [element for element in array1 if element in array2]
print(common_elements)

תְפוּקָה:

[2, 4]

הקוד לעיל משתמש בהבנת רשימה כדי לחזור על המערך הראשון וכולל רק את האלמנטים שנמצאים גם במערך השני, ויוצר רשימה של אלמנטים נפוצים.

שיטה 3: שימוש בפונקציה filter()

ה filter() ניתן להשתמש בפונקציה ב- Python כדי למצוא אלמנטים משותפים על ידי העברת פונקציית lambda שבודקת חברות במערך השני. גישת תכנות פונקציונלית זו היא תמציתית וגם אקספרסיבית.

הנה דוגמה:

array1 = [1, 2, 3, 4]
array2 = [2, 4, 6, 8]
common_elements = list(filter(lambda x: x in array2, array1))
print(common_elements)

תְפוּקָה:

[2, 4]

ה filter() function מיישמת פונקציית lambda על כל אלמנט במערך הראשון, שבודקת את קיומה במערך השני. לאחר מכן, החזרה המוחזר מומר לרשימה כדי לאחזר את האלמנטים הנפוצים.

שיטה 4: שימוש בספריית NumPy

עבור חישובים מספריים, ספריית NumPy מציעה מגוון של פעולות מערך יעילות. ה numpy.intersect1d() ניתן להשתמש בפונקציה כדי למצוא את האלמנטים המשותפים בין שני מערכי NumPy במהירות רבה ופחות קוד.

הנה דוגמה:

import numpy as np

array1 = np.array([1, 2, 3, 4])
array2 = np.array([2, 4, 6, 8])
common_elements = np.intersect1d(array1, array2)
print(common_elements)

תְפוּקָה:

[2 4]

קוד זה משתמש בספריית NumPy כדי ליצור תחילה מערכי NumPy מרשימות ה-Python שלנו ולאחר מכן מיישם את intersect1d() פונקציה כדי למצוא את האלמנטים המשותפים.

שיטת בונוס One Liner 5: שימוש בהבנת רשימה ובסטים

הבנת הרשימות ב-Python מספקת דרך קומפקטית ליצירת רשימות המבוססות על רשימות קיימות. על ידי שילובו עם סט עבור המערך השני, נוכל לייעל את החיפוש שלנו אחר אלמנטים משותפים.

הנה דוגמה:

array1 = [1, 2, 3, 4]
array2 = [2, 4, 6, 8]
common_elements = [element for element in array1 if element in set(array2)]
print(common_elements)

תְפוּקָה:

[2, 4]

קטע זה משפר את השיטה השנייה על ידי העברת המערך השני לקבוצה מחוץ להבנת הרשימה, ומפחית את מורכבות הזמן הכוללת של מבחן החברות מ-O(n) ל-O(1).

סיכום/דיון

  • שיטה 1: הגדר צומת. מהיר ויעיל עבור מערכי נתונים גדולים. מוגבל לסוגי hashable (סוגים בלתי ניתנים לשינוי).
  • שיטה 2: לולאה ומותנה. קל למתחילים להבנה. פוטנציאל לא יעיל עם מערכי נתונים גדולים ללא אינדקס.
  • שיטה 3: באמצעות filter(). תמציתי ופונקציונלי. עשוי להיות איטי יותר בגלל תקורה של תפקוד עבור מערכי נתונים גדולים.
  • שיטה 4: שימוש בספריית NumPy. מותאם מאוד לנתונים מספריים. דורש ספרייה חיצונית ועובד בעיקר עם מערכים מספריים.
  • שיטה 5: One-Liner באמצעות הבנת רשימה וסטים. אופטימלי ותמציתי. הקריאה עשויה להיות מושפעת עבור אלה שאינם מכירים את הבנת הרשימה.



קישור לכתבת המקור – 2024-02-15 22:52:11

Facebook
Twitter
LinkedIn
Telegram
WhatsApp
Email
פרסומת
X-ray_Promo1

עוד מתחומי האתר