Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Enam fungsi terbina dalam ajaib dalam Python

Enam fungsi terbina dalam ajaib dalam Python

王林
王林ke hadapan
2023-04-13 08:04:051820semak imbas

Enam fungsi terbina dalam ajaib dalam Python

Hidup ini singkat, orang baru belajar Python!

Saya seorang pemula, hari ini, kami akan berkongsi 6 fungsi terbina dalam ajaib sekaligus. Dalam banyak buku komputer, ia juga biasanya diperkenalkan sebagai fungsi peringkat tinggi. Dan dalam kerja harian saya, saya sering menggunakannya untuk membuat kod lebih cepat dan lebih mudah difahami.

Enam fungsi terbina dalam ajaib dalam Python

Fungsi Lambda

Fungsi Lambda digunakan untuk mencipta fungsi tanpa nama, iaitu fungsi tanpa nama. Ia hanyalah ungkapan, dan badan fungsi adalah lebih mudah daripada def. Fungsi tanpa nama digunakan apabila kita perlu mencipta fungsi yang menjalankan satu operasi dan boleh ditulis dalam satu baris.

lambda [arg1 [,arg2,.....argn]]:expression

Isi badan lambda ialah ungkapan, bukan blok kod. Hanya logik terhad boleh dirangkumkan dalam ungkapan lambda. Contohnya:

lambda x: x+2

Jika kita juga mahu memanggil fungsi yang ditakrifkan oleh def pada bila-bila masa, kita boleh menetapkan fungsi lambda kepada objek fungsi tersebut.

add2 = lambda x: x+2
add2(10)

Hasil keluaran:

Enam fungsi terbina dalam ajaib dalam Python

Menggunakan fungsi Lambda, kod boleh dipermudahkan dengan banyak.

Enam fungsi terbina dalam ajaib dalam Python

Seperti yang ditunjukkan dalam rajah di atas, senarai baharu senarai hasil dijana dengan satu baris kod menggunakan fungsi lambda.

Fungsi peta

Fungsi map() memetakan fungsi kepada semua elemen senarai input.

map(function,iterable)

Sebagai contoh, kami mula-mula mencipta fungsi untuk mengembalikan perkataan input huruf besar, dan kemudian menggunakan fungsi ini pada semua elemen dalam warna senarai.

def makeupper(word):
return word.upper()
colors=['red','yellow','green','black']
colors_uppercase=list(map(makeupper,colors))
colors_uppercase

Hasil keluaran:

Enam fungsi terbina dalam ajaib dalam Python

Selain itu, kami juga boleh menggunakan fungsi tanpa nama lambda untuk bekerjasama dengan fungsi peta, yang boleh lebih diperkemas.

colors=['red','yellow','green','black']
colors_uppercase=list(map(lambda x: x.upper(),colors))
colors_uppercase

Jika kita tidak menggunakan fungsi Map, kita perlu menggunakan gelung for.

Enam fungsi terbina dalam ajaib dalam Python

Seperti yang ditunjukkan dalam rajah di atas, dalam penggunaan sebenar, fungsi Map akan menjadi 1.5 kali lebih pantas daripada kaedah gelung untuk menyenaraikan unsur secara berurutan.

Fungsi Reduce

Reduce() ialah fungsi yang sangat berguna apabila anda perlu melakukan beberapa pengiraan pada senarai dan mengembalikan hasilnya. Sebagai contoh, apabila anda perlu mengira hasil darab semua elemen senarai integer, anda boleh menggunakan fungsi pengurangan. [1]

Perbezaan terbesar antaranya dan fungsi ialah fungsi pemetaan (fungsi) dalam reduce() menerima dua parameter, manakala peta menerima satu parameter.

reduce(function, iterable[, initializer])

Seterusnya kami menggunakan contoh untuk menunjukkan proses pelaksanaan kod reduce().

from functools import reduce
def add(x, y) : # 两数相加
return x + y
numbers = [1,2,3,4,5]
sum1 = reduce(add, numbers) # 计算列表和

Hasil jumlah1 = 15 diperolehi Proses pelaksanaan kod ditunjukkan dalam animasi di bawah.

Enam fungsi terbina dalam ajaib dalam Python

▲Animasi proses pelaksanaan kod

Digabungkan dengan rajah di atas, kita akan melihat bahawa reduce menggunakan fungsi penambahan add() pada senarai [ 1 ,2,3,4,5], fungsi pemetaan menerima dua parameter, dan reduce() terus mengumpul hasil dengan elemen seterusnya dalam senarai.

Selain itu, kami juga boleh menggunakan fungsi tanpa nama lambda untuk bekerjasama dengan fungsi pengurangan, yang boleh lebih diperkemas.

from functools import reduce
numbers = [1,2,3,4,5]
sum2 = reduce(lambda x, y: x+y, numbers)

Jumlah keluaran2= 15 diperolehi, yang konsisten dengan keputusan sebelumnya.

Nota: reduce() telah dialihkan ke modul functools sejak Python 3.x [2]. Jika kita mahu menggunakannya, kita perlu menggunakan daripada functools import reduce >

Enumerate( ) digunakan untuk menggabungkan objek data yang boleh dilalui (seperti senarai, tuple atau rentetan) ke dalam urutan indeks, dan menyenaraikan data dan subskrip data pada masa yang sama Ia biasanya digunakan dalam untuk gelung. Sintaksnya adalah seperti berikut:

Dua parameternya, satu ialah jujukan, lelaran atau objek lain yang menyokong lelaran, satu lagi ialah kedudukan permulaan subskrip, yang bermula dari 0 secara lalai, juga Nombor permulaan kaunter boleh disesuaikan.

enumerate(iterable, start=0)

Jika kita mempunyai senarai warna yang menyimpan warna, kita akan mendapat objek enumerate selepas menjalankannya. Ia boleh digunakan secara terus dalam gelung untuk atau ditukar kepada senarai Penggunaan khusus adalah seperti berikut.

colors = ['red', 'yellow', 'green', 'black']
result = enumerate(colors)

for count, element in result:
print(f"迭代编号:{count},对应元素:{element}")

Zip 函数

zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表[3]。

我们还是用两个列表作为例子演示:

colors = ['red', 'yellow', 'green', 'black']
fruits = ['apple', 'pineapple', 'grapes', 'cherry']
for item in zip(colors,fruits):
print(item)

输出结果:

Enam fungsi terbina dalam ajaib dalam Python

当我们使用zip()函数时,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

prices =[100,50,120]
for item in zip(colors,fruits,prices):
print(item)

Enam fungsi terbina dalam ajaib dalam Python

Filter 函数

filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,其语法如下所示[4]。

filter(function, iterable)

比如举个例子,我们可以先创建一个函数来检查单词是否为大写,然后使用filter()函数过滤出列表中的所有奇数:

def is_odd(n):
return n % 2 == 1
old_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_list = filter(is_odd, old_list)
print(newlist)

输出结果:

Enam fungsi terbina dalam ajaib dalam Python

今天分享的这6个内置函数,在使用 Python 进行数据分析或者其他复杂的自动化任务时非常方便。

Atas ialah kandungan terperinci Enam fungsi terbina dalam ajaib dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam