Python מספק דרכים רבות להשוות בין שתי הרשימות. השוואה היא התהליך שבו פריטי הנתונים של נבדקים מול פריט נתונים אחר ברשימה, בין אם הם זהים ובין אם לא.
list1 - [11, 12, 13, 14, 15] list2 - [11, 12, 13, 14, 15] Output - The lists are equal
שיטות ההשוואה בין שתי רשימות מובאות להלן.
mylivecricket.
- הפונקציה cmp()
- הפונקציה set() ואופרטור ==
- הפונקציה sort() ואופרטור ==
- הפונקציה collection.counter()
- הפונקציה reduce() ו-map().
הפונקציה cmp()
ה פִּיתוֹן הפונקציה cmp() משווה את שני אובייקטי Python ומחזירה את ערכי המספרים השלמים -1, 0, 1 בהתאם להשוואה.
הערה - זה לא בשימוש בגרסת Python 3.x.
הפונקציה set() ואופרטור ==
פִּיתוֹן מַעֲרֶכֶת() פוּנקצִיָה לתפעל את הרשימה לתוך הסט מבלי לדאוג לסדר האלמנטים. חוץ מזה, אנו משתמשים באופרטור שווה לאופרטור (==) כדי להשוות בין פריטי הנתונים של הרשימה. בואו נבין את הדוגמה הבאה.
דוגמא -
list1 = [11, 12, 13, 14, 15] list2 = [12, 13, 11, 15, 14] a = set(list1) b = set(list2) if a == b: print('The list1 and list2 are equal') else: print('The list1 and list2 are not equal')
תְפוּקָה:
The list1 and list2 are equal
הֶסבֵּר:
בדוגמה לעיל, הכרזנו על השוואה בין שתי הרשימות. המרנו את הרשימות הללו לסט והשווינו כל אלמנט בעזרת האופרטור ==. כל האלמנטים שווים בשתי הרשימות, אז אם בלוק הופעל והודפס התוצאה.
השיטה sort() עם האופרטור ==
פִּיתוֹן סוג() הפונקציה משמשת למיון הרשימות. הרכיבים של אותה רשימה הם אותה מיקום אינדקס שהיא מתכוונת; רשימות שוות.
הערה - בשיטת sort() אנו יכולים להעביר את פריטי הרשימה בכל סדר מכיוון שאנו ממיינים את הרשימה לפני השוואה.
בואו נבין את הדוגמה הבאה -
דוגמא -
import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] # Sorting the list list1.sort() list2.sort() list3.sort() if list1 == list2: print('The list1 and list2 are the same') else: print('The list1 and list3 are not the same') if list1 == list3: print('The list1 and list2 are not the same') else: print('The list1 and list2 are not the same')
תְפוּקָה:
The list1 and list3 are not the same The list1 and list2 are not the same
הפונקציה collection.counter()
מודול האיסוף מספק את דֶלְפֵּק(), אשר משווים את הרשימה ביעילות. הוא מאחסן את הנתונים בפורמט מילון : וסופר את התדירות של פריטי הרשימה.
מערכת קבצים לינוקס
הערה - סדר האלמנטים של הרשימה אינו משנה בפונקציה זו.
דוגמא -
import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] if collections.Counter(list1) == collections.Counter(list2): print('The lists l1 and l2 are the same') else: print('The lists l1 and l2 are not the same') if collections.Counter(list1) == collections.Counter(list3): print('The lists l1 and l3 are the same') else: print('The lists l1 and l3 are not the same')
תְפוּקָה:
The lists list1 and list2 are not the same The lists list1 and list3 are the same
ה-reduce() ומפה()
ה מַפָּה() הפונקציה מקבלת פונקציה ואובייקט שניתן לחזור על פייתון (רשימה, tuple, מחרוזת וכו') כארגומנטים ומחזירה אובייקט מפה. הפונקציה מיישמת לכל רכיב ברשימה ומחזירה איטרטור כתוצאה מכך.
חוץ מה לְהַפחִית() השיטה מיישמת את הפונקציה הנתונה לאובייקט הניתן לחזרה באופן רקורסיבי.
כאן, נשתמש בשתי השיטות בשילוב. ה מַפָּה() הפונקציה תטמיע את הפונקציה (היא יכולה להיות בהגדרת משתמש או פונקציית lambda) לכל אובייקט שניתן לחזור עליו ול- לְהַפחִית() פונקציה לטפל שתחול באופן רקורסיבי.
הערה - עלינו לייבא את מודול functool כדי להשתמש בפונקציה reduce() .
בואו נבין את הדוגמה הבאה.
דוגמא -
שניים למרבב אחד
import functools list1 = [10, 20, 30, 40, 50] list2 = [10, 20, 30, 50, 40, 60, 70] list3 = [10, 20, 30, 40, 50] if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list2), True): print('The list1 and list2 are the same') else: print('The list1 and list2 are not the same') if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list3), True): print('The list1 and list3 are the same') else: print('The list1 and list3 are not the same')
תְפוּקָה:
The list1 and list2 are not the same The list1 and list3 are the same
בחלק זה, כיסינו שיטות שונות להשוואה בין שתי רשימות ב-Python.