Terapkan fungsi lambda ke daftar python

Di Python, Anda dapat menggunakan

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
_2 untuk menerapkan fungsi bawaan, ekspresi lambda (
for i in map(abs, l):
    print(i)
# 2
# 1
# 0
3), fungsi yang didefinisikan dengan
for i in map(abs, l):
    print(i)
# 2
# 1
# 0
4, dll. , ke semua item iterables seperti list dan tuple

Artikel ini menjelaskan konten berikut

  • Penggunaan dasar
    for i in map(abs, l):
        print(i)
    # 2
    # 1
    # 0
    
    2
    • for i in map(abs, l):
          print(i)
      # 2
      # 1
      # 0
      
      2 mengembalikan iterator di Python3
    • Konversikan ke daftar
  • Terapkan ekspresi lambda (
    for i in map(abs, l):
        print(i)
    # 2
    # 1
    # 0
    
    _3)
  • Terapkan fungsi yang ditentukan dengan
    for i in map(abs, l):
        print(i)
    # 2
    # 1
    # 0
    
    4
  • Tentukan beberapa iterables sebagai argumen
  • Gunakan pemahaman daftar dan ekspresi generator sebagai gantinya
  • Gunakan NumPy sebagai gantinya

Perhatikan bahwa

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
_2 dapat diganti dengan pemahaman daftar atau ekspresi generator. Seperti yang dijelaskan nanti, lebih baik menggunakannya dalam banyak kasus

  • Daftar pemahaman dengan Python

Tautan Bersponsor

Penggunaan dasar for i in map(abs, l): print(i) # 2 # 1 # 0 2

Argumen pertama dari

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
_2 adalah objek yang dapat dipanggil seperti fungsi yang akan diterapkan, dan argumen kedua adalah objek yang dapat diulang seperti daftar

for i in map(abs, l): print(i) # 2 # 1 # 0 2 mengembalikan iterator di Python3

Terapkan fungsi bawaan

for i in l:
    print(abs(i))
# 2
# 1
# 0
_3 yang mengembalikan nilai absolut

Dalam Python 3,

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2 mengembalikan objek bertipe
for i in l:
    print(abs(i))
# 2
# 1
# 0
5 yang merupakan iterator, dan
for i in l:
    print(abs(i))
# 2
# 1
# 0
6 tidak menampilkan item

l = [-2, -1, 0]
print(map(abs, l))
# <map object at 0x10651a400>

print(type(map(abs, l)))
# <class 'map'>

sumber.

Nilai iterator dapat diambil dengan pernyataan

for i in l:
    print(abs(i))
# 2
# 1
# 0
7

  • for loop dengan Python (dengan range, enumerate, zip, dll. )

for i in map(abs, l):
    print(i)
# 2
# 1
# 0

sumber.

Hasil yang sama diperoleh jika proses dijalankan dalam blok

for i in l:
    print(abs(i))
# 2
# 1
# 0
7 tanpa menggunakan
for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2

for i in l:
    print(abs(i))
# 2
# 1
# 0

sumber.

Perhatikan bahwa

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2 di Python 2 mengembalikan daftar, jadi berhati-hatilah saat menjalankan kode Python 2 di Python 3

Konversikan ke daftar

Jika Anda ingin mengonversi hasil

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2 menjadi daftar, gunakan
print(list(map(abs, l)))
# [2, 1, 0]
2

print(list(map(abs, l)))
# [2, 1, 0]

sumber.

Misalnya, terapkan

print(list(map(abs, l)))
# [2, 1, 0]
_3 ke daftar string untuk mengubahnya menjadi daftar jumlah karakter

  • Dapatkan panjang string (jumlah karakter) dengan Python

l_s = ['apple', 'orange', 'strawberry']
print(list(map(len, l_s)))
# [5, 6, 10]

sumber.

Dalam argumen kedua

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2, tidak hanya daftar tetapi juga iterable seperti tuple atau
print(list(map(abs, l)))
# [2, 1, 0]
5 dapat ditentukan

  • Cara menggunakan range() dengan Python

print(list(map(abs, range(-2, 1))))
# [2, 1, 0]

sumber.

Terapkan ekspresi lambda (for i in map(abs, l): print(i) # 2 # 1 # 0 _3)

Jika Anda ingin menerapkan proses apa pun alih-alih fungsi bawaan, gunakan ekspresi lambda (

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
3)

  • Ekspresi Lambda dengan Python

l = [-2, -1, 0]
print(list(map(lambda x: x**2, l)))
# [4, 1, 0]

sumber.

Terapkan fungsi yang ditentukan dengan for i in map(abs, l): print(i) # 2 # 1 # 0 4

Dimungkinkan juga untuk mendefinisikan fungsi dengan

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
4 dan menentukannya sebagai argumen pertama dari
for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2

  • Definisikan dan panggil fungsi dengan Python (def, return)

def square(x):
    return x**2

print(list(map(square, l)))
# [4, 1, 0]

sumber.

Tautan Bersponsor

Tentukan beberapa iterables sebagai argumen

Anda dapat menentukan lebih banyak iterables seperti

l_s = ['apple', 'orange', 'strawberry']
print(list(map(len, l_s)))
# [5, 6, 10]
1

Jika beberapa iterable ditentukan, argumen pertama harus berupa fungsi yang menerima jumlah argumen tersebut. Kesalahan dimunculkan jika jumlah iterables tidak cocok dengan jumlah argumen yang diterima fungsi

l_1 = [1, 2, 3]
l_2 = [10, 20, 30]
print(list(map(lambda x, y: x * y, l_1, l_2)))
# [10, 40, 90]

# print(list(map(abs, l_1, l_2)))
# TypeError: abs() takes exactly one argument (2 given)

sumber.

Jika iterables memiliki ukuran yang berbeda (jumlah item), item tambahan akan diabaikan

l_3 = [100, 200, 300, 400]
print(list(map(lambda x, y, z: x * y * z, l_1, l_2, l_3)))
# [1000, 8000, 27000]

sumber.

Gunakan pemahaman daftar dan ekspresi generator sebagai gantinya

Proses yang sama seperti

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
_2 dapat dicapai dengan pemahaman daftar dan ekspresi generator

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
0

sumber.

Jika Anda ingin mendapatkan daftar seperti

l_s = ['apple', 'orange', 'strawberry']
print(list(map(len, l_s)))
# [5, 6, 10]
_3, gunakan pemahaman daftar, dan jika Anda ingin mendapatkan iterator seperti
for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2, gunakan ekspresi generator

  • Daftar pemahaman dengan Python

Seperti yang ditunjukkan dalam pertanyaan Stack Overflow berikut, dalam banyak kasus, menggunakan pemahaman daftar dan ekspresi generator lebih disukai daripada

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2 karena kodenya lebih ringkas dan jelas

  • python - Pemahaman daftar vs peta - Stack Overflow

Untuk kecepatan pemrosesan, jawaban berikut diberikan

    • Daftar pemahaman dan
      l_s = ['apple', 'orange', 'strawberry']
      print(list(map(len, l_s)))
      # [5, 6, 10]
      
      3
      • Saat menerapkan fungsi bawaan,
        l_s = ['apple', 'orange', 'strawberry']
        print(list(map(len, l_s)))
        # [5, 6, 10]
        
        3 lebih cepat
      • Saat menerapkan ekspresi lambda, pemahaman daftar lebih cepat
    • Ekspresi generator dan
      for i in map(abs, l):
          print(i)
      # 2
      # 1
      # 0
      
      2
      • for i in map(abs, l):
            print(i)
        # 2
        # 1
        # 0
        
        _2 lebih cepat

Perhatikan bahwa, karena kecepatan pemrosesan dapat bervariasi karena berbagai faktor, jika kecepatan penting bagi Anda, disarankan untuk mengukurnya dalam kondisi yang sedekat mungkin dengan asumsi Anda

  • Ukur waktu eksekusi dengan timeit di Python

Gunakan NumPy sebagai gantinya

Dalam hal daftar angka, proses

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2 juga dapat direalisasikan dengan NumPy. Kode ini bahkan lebih jelas daripada
for i in map(abs, l):
    print(i)
# 2
# 1
# 0
2 dan daftar pemahaman

for i in map(abs, l):
    print(i)
# 2
# 1
# 0
_1

sumber.

NumPy lebih cepat untuk daftar besar dan pemrosesan yang rumit. NumPy menyediakan berbagai fungsi, jadi Anda harus mencobanya jika Anda sedang memproses array angka

Bisakah kita meneruskan daftar ke fungsi lambda dengan Python?

Dimungkinkan untuk meneruskan daftar ke fungsi lambda , tetapi tidak mungkin menggunakan daftar dengan operator **.

Bagaimana Anda menerapkan fungsi ke seluruh daftar dengan Python?

Cara terbaik untuk menerapkan fungsi ke setiap elemen daftar adalah dengan menggunakan fungsi map() bawaan Python yang mengambil fungsi dan satu atau lebih iterables sebagai argumen . Itu kemudian menerapkan fungsi ke setiap elemen iterables. . It then applies the function to each element of the iterables.

Bisakah Anda menerapkan fungsi ke daftar dengan Python?

4 cara berbeda untuk menerapkan fungsi ke daftar dengan python. Menerapkan Fungsi ke daftar menggunakan for loop dengan python . Menerapkan Fungsi ke semua anggota atau elemen daftar menggunakan Fungsi Peta (). Gunakan Pemahaman Daftar untuk menerapkan fungsi ke daftar.

Bisakah fungsi lambda mengulang daftar?

Ekspresi lambda adalah kode sebaris yang mengimplementasikan antarmuka fungsional tanpa membuat kelas anonim. Di Java 8, pernyataan forEach dapat digunakan bersama dengan ekspresi lambda yang mengurangi perulangan melalui Map menjadi pernyataan tunggal dan juga mengulangi elemen daftar.