Membangun daftar dari awal dengan mengulangi urutan dan melakukan beberapa perhitungan pada setiap elemen dalam urutan Show
Membangun daftar dari awal dengan mengulangi urutan bersarang
Membangun daftar dari awal dengan memfilter urutan menurut beberapa kriteria atau kriteria
Peta, Lambda, dan FilterSalah 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] lambdaPada 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 bersamaFormulir 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 >>> 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 PemahamanSemua dari enam contoh asli dapat dicapai dengan menggunakan sintaks yang konsisten, bersih, dan elegan yang disebut Pemahaman daftar sederhanaBentuk 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 >>> 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
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 bersarangPemahaman 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 difilterBentuk 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 menggunakan fungsi lambda di Python?Sintaks. Sederhananya, fungsi lambda sama seperti fungsi python normal lainnya, kecuali bahwa ia tidak memiliki nama saat mendefinisikannya, dan ia terkandung dalam satu baris kode. Fungsi lambda mengevaluasi ekspresi untuk argumen tertentu. Anda memberi fungsi nilai (argumen) dan kemudian memberikan operasi (ekspresi) .
Bagaimana Anda mencetak angka genap menggunakan lambda dengan Python?list(range(0, 20, 2)) akan membantu.
Bagaimana Anda mengurutkan daftar dengan Python menggunakan lambda?sort() disetel ke lambda. Argumen x adalah elemen iterable ( tuple ) yang akan diurutkan berdasarkan elemen kedua, angka. Ekspresi lambda mengurutkan daftar berdasarkan elemen kedua dari nilai tuple dan memperbarui yang asli. Daftar yang diperbarui tidak dikembalikan.
Bagaimana cara mengembalikan daftar angka yang ada dalam daftar yang diberikan menggunakan lambda?Program Python untuk memfilter daftar angka menggunakan Lambda. . Algoritma Langkah 1. Deklarasikan daftar nomor Langkah 2. Gunakan fungsi filter() dengan ekspresi lambda untuk menemukan bilangan genap. . Langkah 3. Cetak daftar bilangan genap Langkah 4. Gunakan fungsi filter dengan ekspresi lambda untuk menemukan angka ganjil |