Python map() funktsioon koos NÄIDETEGA

⚡ Nutikas kokkuvõte

Python map() rakendab antud funktsiooni igale itereeritava objektile, näiteks loendile, tuple'ile, hulgale, sõnastikule või stringile. See tagastab laisa kaardi objekti, mille saate teisendada list() abil või itereerida tsükli abil.

  • 🔢 süntaksit: map() võtab funktsiooni ja ühe või mitu itereeritavat elementi ning rakendab seda funktsiooni igale elemendile.
  • 🔁 Tagastusväärtus: map() tagastab laisa kaardiobjekti, seega mähkige see tulemuste kuvamiseks list(), tuple() või set() funktsioonidesse.
  • 🧩 Itereeritavad: Loendid, tuupled, hulgad, sõnastikud ja stringid toimivad kõik map() sisenditena.
  • Lambda: map() ja lambda sidumine väldib eraldi nimega funktsiooni defineerimist lihtsate teisenduste jaoks.
  • Mitmed itereeritavad elemendid: Mitme itereeritava objekti edastamine rakendab funktsiooni neile paralleelselt, stopping kõige lühemal juhul.
  • 🤖 AI abi: Tehisintellekti assistendid, näiteks GitHub Copilot, genereerivad map() kõnesid ja kaardistiilis teisendab masinõppes andmevoo kanaleid.

Python map() Funktsioon

Süntaks

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

parameetrid

Siin on kaks olulist parameetrit:

  • funktsioon: Kohustuslik funktsioon, mis tuleb anda funktsioonile map() ja mida rakendatakse kõigile iteraatoris saadaolevatele elementidele.
  • iteraator: Kohustuslik itereeritav objekt. See võib olla loend, tuple jne. Funktsioonile map() saab edastada mitu iteraatoriobjekti.

Tagasi väärtus

Funktsioon map() rakendab antud funktsiooni kõigile iteraatori sees olevatele elementidele ja tagastab itereeritava kaardiobjekti, st. tuple'i, loendi jne.

Kuidas funktsioon map() töötab?

Funktsioon map() võtab vastu kaks sisendit: funktsiooni ja itereeritava objekti. Funktsioonile map() antud funktsioon on tavaline funktsioon ja see itereerib kõiki itereeritavas objektis olevaid väärtusi.

Oletame näiteks, et teil on arvude loend ja soovite leida iga numbri ruudu.

Väljundi saamiseks vajame funktsiooni, mis tagastab antud arvu ruudu. Funktsioon on järgmine:

def square(n):
	return n*n

Nende üksuste loend, mille ruutu tahame leida, on järgmine:

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

Nüüd kasutame sisseehitatud funktsiooni map(), et leida iga minu_loendi elemendi ruut.

Lõplik kood on järgmine:

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))

Väljund:

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

Nagu eespool näha, on funktsiooni map() väljundiks ekraanil kuvatav kaardiobjekt .

Lõppväljundi saamiseks peate map() väljundit itereerima for-tsükli või list() meetodi abil. Olen koodis kasutanud list() funktsiooni antud loendis olevate väärtuste kuvamiseks.

Seega funktsiooni map() abil saame iga arvu ruudu. Funktsioonile map() antud loend oli [2,3,4,5,6,7,8,9] ja funktsiooni square() abil saime väljundiks [4, 9, 16, 25, 36, 49, 64, 81].

Funktsioon map() rakendab funktsiooni square() kõigile loendi elementidele. Näiteks võtab see muutuja my_list ja uuendab loendit iga arvu ruuduga. Väljund salvestatakse muutujasse updated_list.

Kaardi () kasutamine koos Python sisseehitatud funktsioonid

. Python funktsioon map() on sisseehitatud funktsioon ja seda saab kasutada ka teiste sisseehitatud funktsioonidega, mis on saadaval PythonSelles näites kasutame ära Python round() on sisseehitatud funktsioon, mis ümardab antud väärtused.

Näide:

Minu loend on my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Vajan iga loendis oleva elemendi ümardatud väärtusi, seega kasutame map() funktsioonina round().

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))

Väljund:

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

Funktsiooni round() rakendatakse kõigile loendi elementidele ja see tagastab loendi, kus kõik väärtused on ümardatud, nagu väljundis näidatud.

Mapi () kasutamine stringiga iteraatorina

Samuti saame stringil kasutada kaarti (). sisse Python, string toimib nagu massiiv, seega saame seda map() sees hõlpsalt kasutada.

Selles näites on meil funktsioon myMapFunc(), mis teisendab antud stringi suurtäheliseks. Funktsioon myMapFunc() antakse funktsioonile map(). Funktsioon map() teisendab antud stringi suurtäheliseks, edastades stringi funktsioonile 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="")

Väljund:

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

Kasutades funktsiooni map() koos nimekirjaga Numbers

Loendiga map() töötamiseks võtame numbrite loendi ja korrutame iga loendis oleva arvu 10-ga.

Kasutatav loend on [2,3,4,5,6,7,8,9]. Funktsioon myMapFunc() korrutab antud arvu 10-ga. Funktsioon antakse koos loendiga funktsioonile map().

Näide:

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))

Väljund:

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

Näeme väljundit, et iga loendis olev arv korrutatakse 10-ga.

Kaardi() kasutamine koos Tuple'iga

Korteel on objekt sees Python mille üksused on komadega eraldatud ja ümarnurksulgudes. Selles näites võtame stringväärtustega tuupli. Kasutatav funktsioon teisendab antud väärtused suurtähtedeks.

Näide:

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))

Väljund:

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

Saadud väljund on tuple tagasi, kus kõik selles olevad väärtused on suurtähtedeks teisendatud.

Kaardi () kasutamine sõnastikuga

A sõnastik sisse Python luuakse looksulgude ({}) abil. Kuna sõnastik on iteraator, saab seda funktsiooni map() sees kasutada. Kasutame nüüd sõnastikku iteraatorina funktsiooni map() sees.

Järgnev näide demonstreerib sõnastiku iteraatori toimimist map() funktsioonis:

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))

Väljund:

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

Kaardi() kasutamine koos Set

Komplekt sisse Python on lokkis nurksulgudes ({}) olevate elementide järjestamata kogum. Kuna set() on samuti iteraator, saab seda kasutada map() funktsiooni sees.

Siin on toimiv näide komplekti kasutamisest iteraatorina map() sees:

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))

Väljund:

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

Kaardi () kasutamine lambda funktsiooniga

In Python, kasutatakse lambda avaldisi anonüümsete funktsioonide konstrueerimiseks. Peate kasutama lambda märksõna nagu def tavaliste funktsioonide määratlemiseks.

Selles näites kasutame map() funktsioonis lambda funktsiooni. Lambda funktsioon korrutab iga loendi väärtuse 10-ga.

Näide:

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))

Väljund:

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

Mitme iteraatori kasutamine map() funktsiooni sees

Näide 1: Kahe loenditeraatori edastamine funktsioonile map()

Funktsioonile map() saab korraga saata mitu iteraatorit, st loendi, tuple'i jne.

Näiteks kui soovite lisada kaks loendit, saab sama teha ka funktsiooni map() abil. Me kasutame kahte loendit, my_list1 ja my_list2.

Allolevas näites lisatakse esimene element loendist my_list1 loendi my_list2 esimesele elementile. Funktsioon myMapFunc() võtab elemendid loendist my_list1 ja my_list2 ning tagastab mõlema summa.

Siin on näide kahe antud loendi liitmisest funktsiooni map() abil.

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))

Väljund:

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

Näide 2: Ühe Tuple'i ja loenditeraatori edastamine map()-ile

Funktsioonis map() kasutame loendit ja tuple'iteraatorit. Funktsioonile map() antud funktsioon myMapFunc() hangib elemendid loendist ja tuple'ist. Elemendid ühendatakse alakriipsuga (_). Töötav näide on näidatud allpool:

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))

Väljund:

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

KKK

Mõlemad rakendavad igale üksusele operatsiooni. Loendi mõistmine on sageli loetavam ja tagastab otse loendi, samas kui map() tagastab laisa kaardiobjekti ja võib olla kiirem olemasoleva nimega funktsiooni taaskasutamisel.

Ei. map() ei muuda kunagi algset itereeritavat objekti. See loeb iga elemendi, rakendab teie funktsiooni ja loob uue laisa kaardi objekti, jättes lähtekoodi loendi, tuple või stringi puutumata.

In Python 3, map() on laisk: see tagastab kaardiobjekti, mis arvutab väärtusi ainult iteratsiooni korral. See säästab mälu suurte andmete puhul. Tulemuste saamiseks mässi see list()-sse või tsükli selle üle.

map() teisendab iga elemendi, filter() hoiab alles ainult testi läbinud elemendid ja reduce() (functoolsist) ühendab kõik elemendid üheks väärtuseks. Koos hõlmavad need teisendamise, valimise ja liitmise toiminguid.

Kui itereeritavad elemendid (iterable'id) erineva pikkusega, peatub map() lühima juures. Pikemate itereeritavate elementide lisaelemente ignoreeritakse, seega viga ei teki ja tulemus vastab lühimale itereeritavale elementi.

Ei. Kaardiobjekt on iteraator, mis ammendub pärast ühte läbimist. Kui olete selle läbinud tsükli või selle peal list() välja kutsunud, on see tühi. Kui teil on vaja seda uuesti kasutada, teisendage see kõigepealt loendiks.

Masinõppes rakendab map() eeltöötlusfunktsioone andmekogumitele, näiteks arvude skaleerimist, teksti tokeniseerimist või funktsioonide teisendamist enne treenimist. See pakub selget ja funktsionaalset viisi sama toimingu käivitamiseks paljude näidiste puhul.

Jah. GitHub Copilot täidab map() kõned automaatselt õige funktsiooni ja itereeritavate väärtustega ning agentlikud tehisintellekti tööriistad saavad tsüklid map() avaldisteks ümber faktoreerida ja seejärel testid käivitada, et käitumise muutumatus veenduda.

Võta see postitus kokku järgmiselt: