Page 107 - python
P. 107

81




                   ตัวอยางที่ 7.9 การใช filter และ lambda กรองขอมูล

                    x = [0, 1, 2, 0, 3, 5]
                    z = list(filter(lambda a:a != 0, x))
                    print(z)


                   ผลลัพธ :
                    [1, 2, 3, 5]
                          ตัวอยางที่ 7.9 ตัวแปร x มีคา  [0, 1, 2, 0, 3, 5] คําสั่ง filter() เปนการกรองใหเหลือคาที่ตรง
                                                                                  
                                                                                    ึ
                               ํ
                   ตามเงื่อนไขที่กาหนด ในตัวอยางนี้ฟงกชั่นกรองคือ lambda a:a != 0 หมายถง คาที่สงเขามาแตละรอบ
                                                   
                                                         
                                                                                      
                   จะเก็บไวในตัวแปร a จากนั้นตรวจสอบวาถา a != 0 ใหคืนคาออกมาจากฟงกชั่น ถาคา a ที่สงเขาไป
                                                                                                      
                                        ่
                   เทากับ 0 ใหตัดทงไป คาสัง filter(function,x) เมื่อ x เปนอารกิวเมนตที่สงใหฟงกชั่นโดยจะเก็บในตัวแปร
                                      ํ
                                 ้
                                 ิ
                   a ผลลัพธหลังจากการกรองแลวมีคา [1, 2, 3, 5]

                   7.9 คําสั่ง reduce
                          คําสั่ง reduce() ทําหนาที่ดําเนินการผลลัพธใหเหลือเพียงคาเดียวตามฟงกชั่นที่กําหนดขึ้น

                   ตัวอยางที่ 7.10 คาสัง reduce
                                     ่
                                  ํ
                    from functools import reduce
                    x = [ 2, 4, 6, 7]
                    m = reduce(lambda a,b:a+b, x)

                    n = reduce(lambda a,b:a-b, x)
                    o = reduce(lambda a,b:a*b, x)
                    print(m, n, o)


                   ผลลัพธ :
                    19  -15  336
                                                                                    
                          ตัวอยางที่ 7.10 ตัวแปร x ประกอบดวยตัวเลข [2, 4, 6, 7] เมื่อผานฟงกชั่น reduct() จะทําการ
                                                                                      
                   สงตัวแปร  x ใหกับฟงกชั่นที่สรางขึ้นดวยคําสั่ง lambda โดยมีฟงกชั่นเทากับ a+b, a-b และ a*b ผลลัพธ
                   จะเปนการนําตัวเลขแตละตัวมาทําการบวก ลบ และคูณ มีคาเทากับ 19 , -15 และ 336 ตามลําดับ









                                ภาพประกอบที่ 7.1 แสดงการ reduce ดวยฟงกชั่นการบวก ลบ และคูณ
   102   103   104   105   106   107   108   109   110   111   112