สมมติว่าเรามีรายการจำนวนตรรกยะ เราต้องค้นหาผลิตภัณฑ์โดยใช้ฟังก์ชันลด ฟังก์ชัน reduce() จะใช้ฟังก์ชันที่มีสองอาร์กิวเมนต์สะสมในรายการออบเจกต์จากซ้ายไปขวา
ดังนั้น หากอินพุตเป็นเหมือนเศษส่วน =[(5,3),(2,8),(6,9),(5,12),(7,2)] ผลลัพธ์จะเป็น (175, 432 ) เพราะ 5/3 * 2/8 * 6/9 * 5/12 * 7/2 =(5*2*6*5*7)/(3*8*9*12*2) =2100/5184 =175/432.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- fracs :=รายการใหม่
- สำหรับแต่ละ f ใน frac ทำ
- แทรกวัตถุเศษส่วนใหม่จาก (ตัวเศษ ตัวส่วน) คู่ f ที่ส่วนท้ายของเศษส่วน
- t :=ลด (fracs พร้อมฟังก์ชัน func(x, y) คืนค่า x*y)
- ส่งคืนคู่ของ (ตัวเศษของ t ตัวส่วนของ t)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
from fractions import Fraction from functools import reduce def solve(frac): fracs = [] for f in frac: fracs.append(Fraction(*f)) t = reduce(lambda x, y: x*y, fracs) return t.numerator, t.denominator frac = [(5,3),(2,8),(6,9),(5,12),(7,2)] print(solve(frac))
อินพุต
[(5,3),(2,8),(6,9),(5,12),(7,2)]
ผลลัพธ์
(175, 432)