הספריה operator

December 31, 2018

הספריה  operator מאפשרת שורה של פונקציות המקבילות לאופרטורים ההשוואתיים והאחראים לפעולות המתמטיות, המובנים בפייתון (כמו שווה, גדול, קטן, לא שווה, גדול שווה, כפל, חילוק, חיבור וכו'). נניח שיש לנו רשימה של המספרים 0 עד 9  ואנו רוצים לבחון מי מהם גדול מ- 5, במקום לרשום פונקציה שתערוך את הבדיקה אנו יכולים להשתמש במתודות של הספריה operator – המתודות הללו בעצם משוות עבורנו אלמנטים שונים, למשל ברשימה, או באובייקט איטרבילי אחר ויכולות להחזיר ערכים בוליאנים. הנה דוגמא –

import operator
lista=[i for i in range(10)]
for item in lista:
    print(operator.gt(5,item))

operator.gt משווה עבור אילו איברים ברשימה המספר חמש גדול יותר (greater than)

התוצאה המתקבלת מהפונקציה שלנו היא בוליאנית –

True

True

True

True

True

False

False

False

False

False

כלומר 5 גדול מחמשת האיברים הראשונים ברשימה, לכן מקבלים True בחמש הפעמים הראשונות ולאחר מכן Flase.

באותו אופן יש אפשרויות נוספות המקבילות לאופרטורים המובנים האחרים בפייתון, למשל operator.lt(x,y) מקביל ל- x<y

operator.eq(x,y) מקביל ל- x==y ואנו יכולים לקבל ערך בוליאני מתאים כאשר עורכים את ההשוואה הזאת. ניתן לצרף גם את הסיומות הבאות ל- operator  -

le מקביל ל- x<=y

ne מקבילי ל- y != x

ge  מקביל ל- x>=y

ניתן להשמש בספריה שלא למטרות השווה, למשל במקום פונקציה לכפל – באופן הבא –

import operator
lista=[i for i in range(5)]
for item in lista:
    m=operator.mul(item,10)
    print(m)

>>> 

0

10

20

30

40

operator.add לחיבור

operator.mod לקבל שארית כמו במודולו %

operator.div לקבל מנה מפעולת חילוק

operator.pow לפעולת חזקה

ועוד (פעולות המקבילות למה שקיים באופן מובנה בפייתון).

אנו יכולים להפוך, כמו בתוכנית הבאה, את כל המספרים לנגניטיב שלהם –

import operator
lista=[i for i in range(-2,2)]
for item in lista:
    print(operator.neg(item))

>>> 

2

1

0

-1

אנו יכולים לשלב את הפונקציות של operator  עם מתודות נוספות, למשל כאשר אנו רוצים לבצע סדרה של פעולות בין שתי רשימות של מספרים כדי לקבל רשימה שלישית המשלבת את תוצאות הפעולה על איברים משתי הרשימות הראשונות- כמו בדוגמא הבאה -

import operator
list1=[2,4,6]
list2=[1,2,3]
maping=map(operator.mul,list1,list2)
print(list(maping))

>>> 

[2, 8, 18]

Please reload

Please reload

רעננו את הדף והקליקו למעבר לנושא הבא: