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
- Daftar pemahaman dan l_s = ['apple', 'orange', 'strawberry']
print(list(map(len, l_s)))
# [5, 6, 10]
3
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