Tulis program python untuk memfilter daftar bilangan bulat menggunakan lambda.

Membangun daftar dari awal dengan mengulangi urutan dan melakukan beberapa perhitungan pada setiap elemen dalam urutan

  1. Misalnya, kita ingin membuat daftar kuadrat bilangan bulat dari 0 hingga 9

    >>> squares = [] # start with an empty list
    >>> for x in range(10): # step over every element in the list of integers from 0 to 9
    ..     squares.append(x**2) # grow the list one element at a time
    ...
    >>> print squares
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    

  1. Misalkan kita ingin membuat daftar panjang nama dalam daftar

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _

  • Membangun daftar dari awal dengan mengulangi urutan bersarang

    1. Misalnya, misalkan kita menginginkan daftar semua kemungkinan pasangan minuman dan makanan dari daftar ['air', 'teh' . 'juice'] and ['ham', 'eggs', 'spam'], respectively:

      >>> possible_choices = []
      >>> for drink in ['water', 'tea', 'juice']:
      ..     for food in ['ham', 'eggs', 'spam']:
      ..         possible_choices.append([drink,food])
      ...
      >>> print possible_choices
      [['water', 'ham'], ['water', 'eggs'], ['water', 'spam'], ['tea', 'ham'], ['tea', 'eggs'], ['tea', 'spam'], ['juice', 'ham'], ['juice', 'eggs'], ['juice', 'spam']]
      

    1. Misalkan kita menginginkan daftar koordinat pada kisi persegi panjang

      >>> coords = []
      >>> for x in range(5):
      ..     for y in range(3):
      ..         coordinate = (x, y)
      ..         coords.append(coordinate)
      ...
      >>> print coords
      [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (4, 0), (4, 1), (4, 2)]
      

  • Membangun daftar dari awal dengan memfilter urutan menurut beberapa kriteria atau kriteria

    1. Misalnya, kita ingin daftar kuadrat bilangan bulat dari 0 sampai 9 di mana kuadrat lebih besar dari 5 dan kurang dari 50

      >>> special_squares = []
      >>> for x in range(10):
      ..     square = x**2
      ..     if square > 5 and square < 50:
      ..         special_squares.append(square)
      ...
      >>> print special_squares
      [9, 16, 25, 36, 49]
      
      _

    1. Misalkan kita ingin mengambil daftar nama dan hanya menemukan yang dimulai dengan huruf B

      >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
      >>> b_names = []
      >>> for name in names:
      ..     if name.startswith('B'):
      ..         b_names.append(name)
      ...
      >>> print b_names
      ['Bob', 'Barbara']
      

  • Peta, Lambda, dan Filter

    Salah satu cara untuk mencapai tujuan yang sama seperti pada contoh di atas adalah dengan menggunakan beberapa alat Python dari pemrograman fungsional. , , dan lambda() .

    Fungsi menerapkan fungsi ke setiap anggota iterable dan mengembalikan hasilnya. Biasanya, seseorang akan menggunakan fungsi sebaris anonim seperti yang didefinisikan oleh lambda, tetapi dimungkinkan untuk menggunakan fungsi apa pun. Itu juga dapat dicapai dengan menggunakan sebagai berikut

    >>> def square(x):
    ..     return x**2
    ...
    >>> squares = map(square, range(10))
    >>> print squares
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    
    _

    Dalam kasus , fungsi sudah ada, jadi kita bisa menggunakannya untuk menerapkannya ke setiap elemen daftar

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = map(len, names)
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    

    lambda

    Pada contoh peta pertama di atas, kita membuat sebuah fungsi, yang disebut persegi , sehingga peta akan memiliki fungsi untuk diterapkan pada deret. Ini adalah kejadian umum, jadi Python menyediakan kemampuan untuk membuat fungsi inline anonim sederhana (tidak ada pernyataan yang diizinkan secara internal) menggunakan apa yang disebut. Jadi, fungsi anonim yang mengembalikan kuadrat dari argumennya dapat ditulis sebagai lambda x. x**2 . Artinya, “Ini adalah fungsi anonim (tanpa nama) yang mengambil satu argumen, disebut x, dan mengembalikan kuadrat dari x. Karena bentuk lambda benar-benar mengevaluasi fungsi, kita juga bisa menyebutnya sebaris. (Ini biasanya hal yang konyol untuk dilakukan, tetapi kami menunjukkannya di sini untuk menunjukkan bahwa bentuk lambda sebenarnya adalah objek fungsi sebaris. ).

    >>> print (lambda x: x**2)(5) # first parens contain a lambda form that is a squaring function, second parens represent calling that function
    25
    >>> # Make a function of two arguments (x and y) that returns their product, then call the function with 3 and 4:
    >>> print (lambda x, y: x*y)(3, 4)
    12
    >>> print (lambda x: x.startswith('B'))('Bob')
    True
    >>> print (lambda x: x.startswith('B'))('Robert')
    False
    >>> incrementer = lambda input: input+1
    >>> # above is same as def incrementer(input): return input+1
    >>> # now we call it
    >>> print incrementer(3)
    4
    
    _

    Menggunakan lambda dan peta bersama

    Formulir Lambda dapat digunakan sebagai argumen fungsi yang diperlukan untuk fungsi tersebut. Misalnya, dapat ditulis sebagai

    >>> squares = map(lambda x: x**2, range(10))
    >>> print squares
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81
    
    _

    Dalam bahasa Inggris, ini berarti, “Terapkan fungsi yang mengkuadratkan argumennya (bentuk lambda) ke setiap anggota daftar bilangan bulat dari 0 hingga 9 (the ), dan simpan hasilnya dalam daftar yang disebut kuadrat

    Dan contoh di atas juga dapat dicapai dengan fungsi bawaan. Filter mengambil fungsi yang mengembalikan atau dan menerapkannya ke urutan, mengembalikan daftar hanya anggota urutan yang fungsinya dikembalikan

    Formulir Lambda juga dapat digunakan dengan fungsi filter; . Dalam , daftar kotak disaring menurut apakah entri yang diberikan lebih besar dari 5 dan kurang dari 50. Bentuk lambda yang kembali saat kondisi ini terpenuhi adalah lambda x. x > 5 dan x . Dengan demikian, kita dapat mereproduksi contoh kelima sebagai berikut. < 50. Thus, we can reproduce the fifth example as follows:

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _0

    Dalam bahasa Inggris, ini berarti, “Temukan setiap anggota dari daftar kotak yang anggotanya lebih besar dari 5 dan kurang dari 50 (setiap anggota yang lambda x: x > 5 dan x . < 50 returns ), and store that in a new variable called special_squares.

    Similarly, the sixth example can be reproduced using filter as follows:

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _1

    Daftar Pemahaman

    Semua dari enam contoh asli dapat dicapai dengan menggunakan sintaks yang konsisten, bersih, dan elegan yang disebut

    Pemahaman daftar sederhana

    Bentuk paling sederhana dari pemahaman daftar adalah

    [ ekspresi-melibatkan-variabel-loop untuk variabel-loop in sequence ]

    Ini akan melewati setiap elemen urutan , secara berturut-turut menyetel loop-variable equal to every element one at a time, and will then build up a list by evaluating expression-involving-loop-variable for each one. This eliminates the need to use lambda forms, and thus generally produces a much more readable code than using and a more compact code than using a for-loop.

    The first example can thus be written compactly as:

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _2

    Beberapa contoh sederhana lainnya

    • Cetak panjang setiap kata dalam daftar nama .

      >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
      >>> lengths = []
      >>> for name in names:
      ..     lengths.append(len(name))
      ...
      >>> print lengths
      [4, 3, 3, 5, 6, 7, 4]
      
      _3

    • Cetak huruf terakhir dari setiap nama dalam daftar nama

      >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
      >>> lengths = []
      >>> for name in names:
      ..     lengths.append(len(name))
      ...
      >>> print lengths
      [4, 3, 3, 5, 6, 7, 4]
      
      _4

    • Cetak kebalikan dari setiap nama dalam daftar nama

      >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
      >>> lengths = []
      >>> for name in names:
      ..     lengths.append(len(name))
      ...
      >>> print lengths
      [4, 3, 3, 5, 6, 7, 4]
      
      _5

    Perhatikan bahwa ekspresi kompleks dapat dimasukkan ke dalam slot untuk variabel-loop-ekspresi yang melibatkan-ekspresi . Misalnya, di sini kami membuat daftar nama, huruf pertama, dan panjang untuk setiap nama dalam daftar.

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _6

    Di mana [nama, nama[0], len(nama)] occupies the expression-involving-loop-variable slot, so that the list comprehension creates a list of [name, name[0], len(name)] for every name in the names sequence.

    Pemahaman daftar bersarang

    Pemahaman daftar dapat disarangkan, dalam hal ini mereka mengambil bentuk berikut

    [ expression-involving-loop-variables for outer-loop-variable in outer-sequence for inner-loop-variable in inner-sequence ]

    Ini setara dengan menulis

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _7

    Dengan demikian, secara kompak dapat ditulis sebagai

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _8

    Dan contoh dapat ditulis sebagai

    >>> names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
    >>> lengths = []
    >>> for name in names:
    ..     lengths.append(len(name))
    ...
    >>> print lengths
    [4, 3, 3, 5, 6, 7, 4]
    
    _9

    Pemahaman daftar yang difilter

    Bentuk terakhir dari pemahaman daftar melibatkan pembuatan daftar dan memfilternya dengan cara yang sama seperti menggunakan. Bentuk pemfilteran pemahaman daftar mengambil bentuk berikut

    [ ekspresi-melibatkan-variabel-loop untuk variabel-loop in sequence if boolean-expression-involving-loop-variable ]

    Bentuk ini mirip dengan bentuk sederhana pemahaman daftar, tetapi ini mengevaluasi boolean-expression-involving-loop-variable untuk setiap item . Jadi kita dapat menggunakan pemahaman daftar untuk menulis ulang sebagai

    >>> possible_choices = []
    >>> for drink in ['water', 'tea', 'juice']:
    ..     for food in ['ham', 'eggs', 'spam']:
    ..         possible_choices.append([drink,food])
    ...
    >>> print possible_choices
    [['water', 'ham'], ['water', 'eggs'], ['water', 'spam'], ['tea', 'ham'], ['tea', 'eggs'], ['tea', 'spam'], ['juice', 'ham'], ['juice', 'eggs'], ['juice', 'spam']]
    
    0

    Perhatikan bahwa hal di atas tidak efisien, karena harus menghitung kuadrat dari x tiga kali terpisah untuk setiap elemen dalam loop. Dengan demikian, berikut ini adalah pendekatan yang setara dan lebih efisien.

    >>> possible_choices = []
    >>> for drink in ['water', 'tea', 'juice']:
    ..     for food in ['ham', 'eggs', 'spam']:
    ..         possible_choices.append([drink,food])
    ...
    >>> print possible_choices
    [['water', 'ham'], ['water', 'eggs'], ['water', 'spam'], ['tea', 'ham'], ['tea', 'eggs'], ['tea', 'spam'], ['juice', 'ham'], ['juice', 'eggs'], ['juice', 'spam']]
    
    1

    Akhirnya, perhatikan bahwa hal tersebut di atas dapat ditulis pada satu baris menggunakan sepasang daftar pemahaman sebagai berikut

    Bagaimana Anda memfilter daftar dengan lambda di Python?

    Untuk memfilter daftar dengan Python, Anda dapat menggunakan fungsi filter() bawaan. .
    Argumen pertama adalah kondisi pemfilteran, yang didefinisikan sebagai fungsi. .
    Argumen kedua adalah iterable untuk difilter—fungsi lambda memeriksa setiap elemen dalam iterable apakah elemen lolos filter atau tidak

    Apa itu filter lambda?

    Kita dapat menggunakan fungsi Lambda di dalam fungsi bawaan filter() untuk menemukan semua bilangan yang habis dibagi 13 dalam daftar . Dalam Python, fungsi anonim berarti suatu fungsi tanpa nama. Fungsi filter() di Python menggunakan fungsi dan daftar sebagai argumen.

    Apa itu lambda () dengan Python?

    lambda adalah kata kunci dalam Python untuk mendefinisikan fungsi anonim . argumen adalah placeholder, yaitu variabel yang akan digunakan untuk menyimpan nilai yang ingin Anda berikan ke ekspresi fungsi. Fungsi lambda dapat memiliki banyak variabel tergantung pada apa yang ingin Anda capai.

    Apa itu lambda dalam contoh Python?

    Fungsi lambda adalah fungsi anonim kecil . Fungsi lambda dapat mengambil sejumlah argumen, tetapi hanya dapat memiliki satu ekspresi.