Python — Petakan, Saring, Kurangi

Mar 06 2023
MAP Pertama, mari kita pahami mengapa sebenarnya kita membutuhkan fungsi map dan bagaimana itu membantu kita mengurangi pekerjaan kita dan membuat kode kita lebih efisien. Misalkan kita memiliki daftar untuk dikerjakan seperti di bawah ini, tetapi masalah dengan daftar tersebut adalah, semua elemen yang ada di dalamnya dalam format string, jadi jika kita mencoba melakukan operasi numerik apa pun, itu tidak akan menghasilkan apa pun.

PETA

Pertama, mari kita pahami mengapa sebenarnya kita membutuhkan fungsi map dan bagaimana itu membantu kita mengurangi pekerjaan kita dan membuat kode kita lebih efisien.

Misalkan kita memiliki daftar untuk dikerjakan seperti di bawah ini, tetapi masalah dengan daftar tersebut adalah, semua elemen yang ada di dalamnya dalam format string, jadi jika kita mencoba melakukan operasi numerik apa pun, itu tidak akan menghasilkan apa pun.

l1 = ["3","5","9","12","25"]
x = l1[0]+1
print(x)
----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
Input In [1], in <cell line: 2>()
1 l1 = ["3","5","9","12","25"]
----> 2 x = l1[0]+1
3 print(x)
TypeError: can only concatenate str (not "int") to str

Sekarang salah satu jalan di sekitar ini adalah untuk loop, mari kita lihat

for i in range(len(l1)):
l1[i] = int(l1[i])

x = l1[0]+1
print(x)
4

Kami akan mengambil daftar lain yang disebut l2 dan akan melakukan operasi yang sama lagi.

l2 = ["3","5","9","12","25"]
l2 = list(map(int,l2))
y = l2[0]+1
print(y)
4

Sekarang mari kita lihat beberapa contoh lainnya juga, misalkan kita ingin mengetahui nilai kuadrat dari seluruh daftar, mari kita lihat bagaimana kita bisa melakukannya dengan bantuan fungsi peta.

Pertama, mari kita tulis fungsi 'sq' yang akan mengembalikan nilai kuadrat dari angka yang diberikan

def sq(a):
  return a*a

l3 = [3,5,7,2,9]
l4 = list(map(sq,l3))
print(l4)
[9, 25, 49, 4, 81]

Sekarang mari kita lihat sesuatu yang lebih rumit, yang ingin kita capai sekarang adalah mendapatkan kuadrat dan pangkat tiga dari 0,8, disimpan dalam daftar. Kami akan menggunakan fungsi peta, fungsi lambda, dan juga kata kunci def kami untuk mendeskripsikan fungsi persegi dan kubus sekarang. Kemudian kita akan menggunakan for loop untuk membuat daftar.

def sq(a):
  return a*a
def cube(a):
  return a*a*a
func = [sq,cube]
for i in range(8):
  rslt = list(map(lambda x:x(i) ,func))
print(rslt)
[0, 0]
[1, 1]
[4, 8]
[9, 27]
[16, 64]
[25, 125]
[36, 216]
[49, 343]

Seperti namanya, fungsi filter membantu kita dalam memfilter sekumpulan iterables tertentu, sebagai argumen dibutuhkan fungsi yang dinyatakan berdasarkan mana kita akan memfilter iterables kita dan kemudian mengambil iterables itu sendiri sebagai argumen. Di bawah 3 jenis filter diberikan, satu akan memfilter angka lebih besar dari 10 dari daftar, satu akan memfilter angka kurang dari 10, dan satu lagi akan memiliki beberapa pengkondisian yang menyatakan angka harus lebih besar dari 10 tetapi kurang dari 15.

l1 = [34,12,5,8,11,14,19,10,1,50]
def grt_condi(num):
  return num>10
def lsr_condi(num):
  return num<10
def multi_condi(num):
  return num>10 and num<15

l2 = list(filter(grt_condi,l1))
l3 = list(filter(lsr_condi,l1))
l4 = list(filter(multi_condi,l1))

print(l2)
print(l3)
print(l4)
[34, 12, 11, 14, 19, 50]
[5, 8, 1]
[12, 11, 14]

Mari kita pahami apa fungsi pengurangan dan masalah apa yang dipecahkannya, untuk memahami ini, pertama-tama mari kita ambil pernyataan masalah dan panduan tradisional kita dalam menyelesaikannya.

Katakanlah ada daftar dan kami ingin mendapatkan penjumlahan dari semua bilangan bulat yang ada dalam daftar

l6 = [2,3,6,5,8,9,10]
x = 0
for i in l6:
  x = x+i
print(x)
43

from functools import reduce
l7 = reduce(lambda x,y:x+y , l6)
print(l7)
43

Untuk lebih banyak konten seperti itu, silakan ikuti profil Medium dan halaman LinkedIn saya —https://www.linkedin.com/in/chandan-sengupta/