Python Funcția map() cu EXEMPLE

⚡ Rezumat inteligent

Python map() aplică o anumită funcție fiecărui element al unui iterabil, cum ar fi o listă, un tuplu, o mulțime, un dicționar sau un șir de caractere. Returnează un obiect map lenj pe care îl convertiți cu list() sau îl iterați folosind o buclă.

  • 🔢 Sintaxă: map() preia o funcție plus unul sau mai multe iterabile și aplică acea funcție fiecărui element.
  • 🔁 Valoare returnată: map() returnează un obiect map lenny, așa că încadrați-l în list(), tuple() sau set() pentru a vizualiza rezultatele.
  • 🧩 Iterabile: Listele, tuplurile, mulțimile, dicționarele și șirurile de caractere funcționează ca intrări pentru map().
  • Lambda: Asocierea funcției map() cu o funcție lambda evită definirea unei funcții denumite separate pentru transformări simple.
  • Iterabile multiple: Transmiterea mai multor iterabile aplică funcția peste ele în paralel, opreșteping la cel mai scurt.
  • 🤖 Asistență AI: Asistenții AI, cum ar fi GitHub Copilot, generează apeluri map(), iar transformări în stil map fac din fluxurile de date din procesul de învățare automată.

Python Funcția map().

Sintaxă

map(function, iterator1,iterator2 ...iteratorN)

parametrii

Iată doi parametri importanți:

  • funcţie: O funcție obligatorie care trebuie dată funcției map(), care va fi aplicată tuturor elementelor disponibile în iterator.
  • iterator: Un obiect iterabil obligatoriu. Poate fi o listă, un tuplu etc. Puteți transmite mai multe obiecte iteratoare funcției map().

Valoarea retur

Funcția map() aplică funcția dată asupra tuturor elementelor din interiorul iteratorului și returnează un obiect hartă iterabil, de exemplu, un tuplu, o listă etc.

Cum funcționează funcția map()?

Funcția map() primește două intrări: o funcție și un obiect iterabil. Funcția dată funcției map() este o funcție normală și iterează peste toate valorile prezente în obiectul iterabil.

De exemplu, considerați că aveți o listă de numere și doriți să găsiți pătratul fiecăruia dintre numere.

Pentru a obține rezultatul, avem nevoie de o funcție care să returneze pătratul numărului dat. Funcția este următoarea:

def square(n):
	return n*n

Lista elementelor pentru care dorim să găsim pătratul este următoarea:

my_list = [2,3,4,5,6,7,8,9]

Acum să folosim funcția încorporată map() pentru a obține pătratul fiecărui element din my_list.

Codul final este următorul:

def square(n):
    return n*n
my_list = [2,3,4,5,6,7,8,9]
updated_list = map(square, my_list)
print(updated_list)
print(list(updated_list))

ieșire:

<map object at 0x0000002C59601748>
[4, 9, 16, 25, 36, 49, 64, 81]

Rezultatul funcției map(), așa cum se vede mai sus, este un obiect hartă afișat pe ecran ca .

Va trebui să iterezi rezultatul din map() folosind o buclă for sau metoda list() pentru a obține rezultatul final. Am folosit list() în cod pentru a afișa valorile din lista dată.

Așadar, folosind funcția map(), putem obține pătratul fiecărui număr. Lista dată funcției map() a fost [2,3,4,5,6,7,8,9], iar folosind funcția square(), rezultatul obținut este [4, 9, 16, 25, 36, 49, 64, 81].

Funcția map() aplică funcția square() asupra tuturor elementelor din listă. De exemplu, preia variabila my_list și actualizează lista cu pătratul fiecărui număr. Rezultatul este stocat în variabila updateed_list.

Folosind map() cu Python funcții încorporate

Python Funcția map() este o funcție încorporată și poate fi folosită și cu alte funcții încorporate disponibile în PythonÎn acest exemplu, vom folosi Python Funcția încorporată round() care rotunjește valorile date.

Exemplu:

Lista pe care o am este my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Am nevoie de valorile rotunjite pentru fiecare element prezent în listă, așa că vom folosi round() ca funcție pentru a face map().

my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]
updated_list = map(round, my_list)
print(updated_list)
print(list(updated_list))

ieșire:

<map object at 0x000000E65F901748>
[3, 4, 4, 6, 6, 8, 8, 10]

Funcția round() se aplică tuturor elementelor din listă și returnează o listă cu toate valorile rotunjite, așa cum se arată în rezultat.

Folosind map() cu un șir ca iterator

De asemenea, putem folosi map() pe un șir. În Python, un șir de caractere se comportă ca un array, deci îl putem folosi cu ușurință în cadrul funcției map().

În acest exemplu, avem o funcție myMapFunc() care se ocupă de convertirea șirului dat în majuscule. Funcția myMapFunc() este dată funcției map(). Funcția map() se va ocupa de convertirea șirului dat în majuscule prin transmiterea șirului către myMapFunc().

def myMapFunc(s):
    return s.upper()
my_str = "welcome to guru99 tutorials!"
updated_list = map(myMapFunc, my_str)
print(updated_list)
for i in updated_list:
    print(i, end="")

ieșire:

<map object at 0x000000DF2E711748>
WELCOME TO GURU99 TUTORIALS!

Utilizarea map() cu o listă de Numbers

Pentru a lucra cu o listă în map(), vom lua o listă de numere și vom înmulți fiecare număr din listă cu 10.

Lista pe care o vom folosi este [2,3,4,5,6,7,8,9]. Funcția myMapFunc() se ocupă de înmulțirea numărului dat cu 10. Funcția este dată funcției map() împreună cu lista.

Exemplu:

def myMapFunc(n):
    return n*10

my_list = [2,3,4,5,6,7,8,9]

updated_list = map(myMapFunc, my_list)
print(updated_list)
print(list(updated_list))

ieșire:

<map object at 0x000000EE2C061898>
[20, 30, 40, 50, 60, 70, 80, 90]

Rezultatul pe care îl vedem este că fiecare număr din listă este înmulțit cu 10.

Folosind map() cu Tuple

Un tuplu este un obiect în Python care are elemente separate prin virgule și cuprinse între paranteze rotunde. În acest exemplu, vom lua un tuplu cu valori de tip șir de caractere. Funcția pe care o vom folosi va converti valorile date în majuscule.

Exemplu:

def myMapFunc(n):
    return n.upper()

my_tuple = ('php','java','python','c++','c')

updated_list = map(myMapFunc, my_tuple)
print(updated_list)
print(list(updated_list))

ieșire:

<map object at 0x0000009C3C3A16A0>
['PHP', 'JAVA', 'PYTHON', 'C++', 'C']

Rezultatul pe care îl obținem este un tuplu invers cu toate valorile din acesta convertite în majuscule.

Folosind map() cu Dicționar

A dicționar în Python este creat folosind acolade ({}). Deoarece dicționarul este un iterator, îl puteți utiliza în cadrul funcției map(). Să folosim acum un dicționar ca iterator în cadrul funcției map().

Următorul exemplu arată funcționarea unui iterator de dicționar în map():

def myMapFunc(n):
    return n*10
my_dict = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_dict)
print(finalitems)
print(list(finalitems))

ieșire:

<map object at 0x0000007EB451DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Folosind map() cu Set

Un set în Python este o colecție neordonată de elemente între acolade ({}). Deoarece set() este, de asemenea, un iterator, o puteți utiliza în cadrul funcției map().

Iată un exemplu funcțional de utilizare a unui set ca iterator în cadrul funcției map():

def myMapFunc(n):
    return n*10
my_set = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_set)
print(finalitems)
print(list(finalitems))

ieșire:

<map object at 0x000000AC8F05DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Folosind map() cu funcția Lambda

In Python, expresiile lambda sunt utilizate pentru a construi funcții anonime. Va trebui să utilizați cuvântul cheie lambda așa cum folosiți def pentru a defini funcțiile normale.

Așadar, în acest exemplu, vom folosi funcția lambda în cadrul funcției map(). Funcția lambda va înmulți fiecare valoare din listă cu 10.

Exemplu:

my_list = [2,3,4,5,6,7,8,9]
updated_list = map(lambda x: x * 10, my_list)
print(updated_list)
print(list(updated_list))

ieșire:

<map object at 0x000000BD18B11898>
[20, 30, 40, 50, 60, 70, 80, 90]

Utilizarea mai multor iteratori în cadrul funcției map()

Exemplul 1: Transmiterea a doi iteratori de listă către map()

Puteți trimite mai mult de un iterator, de exemplu, o listă, un tuplu etc., toate simultan către funcția map().

De exemplu, dacă doriți să adăugați două liste, același lucru se poate face folosind funcția map(). Vom folosi două liste, my_list1 și my_list2.

În exemplul de mai jos, primul element din my_list1 este adăugat la primul element din my_list2. Funcția myMapFunc() preia elemente din my_list1 și my_list2 și returnează suma ambelor.

Iată un exemplu practic de adăugare a două liste date folosind funcția map().

def myMapFunc(list1, list2):
    return list1+list2

my_list1 = [2,3,4,5,6,7,8,9]
my_list2 = [4,8,12,16,20,24,28]

updated_list = map(myMapFunc, my_list1,my_list2)
print(updated_list)
print(list(updated_list))

ieșire:

<map object at 0x0000004D5F751860>
[6, 11, 16, 21, 26, 31, 36]

Exemplul 2: Transmiterea unui tuplu și a unui iterator de listă către map()

Vom folosi o listă și un iterator de tupluri în funcția map(). Funcția dată funcției map(), myMapFunc(), va obține elementele din listă și din tuplu. Elementele vor fi unite cu un caracter de subliniere (_). Exemplul de funcționare este prezentat mai jos:

def myMapFunc(list1, tuple1):
    return list1+"_"+tuple1

my_list = ['a','b', 'b', 'd', 'e']
my_tuple = ('PHP','Java','Python','C++','C')

updated_list = map(myMapFunc, my_list,my_tuple)
print(updated_list)
print(list(updated_list))

ieșire:

<map object at 0x00000059F37BB4E0>
['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

Întrebări frecvente

Ambele aplică o operație fiecărui element. O listă de înțelegere este adesea mai ușor de citit și returnează direct o listă, în timp ce map() returnează un obiect hartă leneș și poate fi mai rapidă atunci când se reutilizează o funcție denumită existentă.

Nu. map() nu modifică niciodată iterabilul original. Citește fiecare element, aplică funcția și produce un nou obiect map lazy, lăsând lista sursă, tuplul sau șirul de caractere intacte.

In Python 3, map() este leneșă: returnează un obiect hartă care calculează valori doar atunci când este iterat. Aceasta economisește memorie pentru date mari. Încadrați-l în list() sau parcurgeți-l prin buclă pentru a obține rezultate.

map() transformă fiecare element, filter() păstrează doar elementele care trec un test, iar reduce() (din functools) combină toate elementele într-o singură valoare. Împreună, acestea acoperă operațiunile de transformare, selectare și agregare.

Când iterabilele diferă în lungime, map() se oprește la cel mai scurt. Elementele suplimentare din iterabilele mai lungi sunt ignorate, deci nu se generează nicio eroare și rezultatul se potrivește cu cel mai scurt iterabil.

Nu. Un obiect de hartă este un iterator care se epuizează după o singură trecere. Odată ce îl parcurgi în buclă sau apelezi list() pe el, devine gol. Convertește-l mai întâi într-o listă dacă ai nevoie de reutilizare.

În învățarea automată, map() aplică funcții de preprocesare asupra seturilor de date, cum ar fi scalarea numerelor, tokenizarea textului sau transformarea caracteristicilor înainte de antrenament. Oferă o modalitate curată și funcțională de a rula aceeași operațiune pe mai multe eșantioane.

Da. GitHub Copilot completează automat apelurile map() cu funcția și iterabilele corecte, iar instrumentele de inteligență artificială agentială pot refactoriza buclele în expresii map(), apoi pot rula testele pentru a confirma că comportamentul este neschimbat.

Rezumați această postare cu: