logo

vähentää() Pythonissa

Pythonissa Reduction() on sisäänrakennettu funktio, joka soveltaa tiettyä funktiota iteroitavan elementteihin vähentäen ne yhdeksi arvoksi.

Reduktorin() syntaksi on seuraava:

 functools.reduce(function, iterable[, initializer]) 
  • The funktion argumentti on funktio, joka ottaa kaksi argumenttia ja palauttaa yhden arvon. Ensimmäinen argumentti on kertynyt arvo, ja toinen argumentti on iteroitavan nykyinen arvo.
  • The toistettavissa argumentti on pienennettävien arvojen sarja.
  • Valinnaista alustusargumenttia käytetään antamaan alkuarvo kertyneelle tulokselle. Jos alustajaa ei ole määritetty, iteroitavan ensimmäistä elementtiä käytetään aloitusarvona.

Tässä on esimerkki, joka havainnollistaa kuinka vähennä()-komentoa käytetään lukuluettelon summan löytämiseen:

rdbms
 # Examples to understand the reduce() function from functools import reduce # Function that returns the sum of two numbers def add(a, b): return a + b # Our Iterable num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # add function is passed as the first argument, and num_list is passed as the second argument sum = reduce(add, num_list) print(f'Sum of the integers of num_list : {sum}') # Passing 10 as an initial value sum = reduce(add, num_list, 10) print(f'Sum of the integers of num_list with initial value 10 : {sum}') 

Lähtö:

 Sum of the integers of num_list : 55 Sum of the integers of num_list with initial value 10 : 65 

Tässä esimerkissä käytämme vähennysfunktiota() lisätäksemme funktiota, joka palauttaa kahden arvon summan jokaiselle numeroluettelon elementtiparille, jolloin saadaan kaikkien elementtien summa.

Käytämme lambda-funktiota reduktorin()-funktion ensimmäisenä argumenttina:

java vertailu
 # Importing reduce function from functools from functools import reduce # Creating a list my_list = [1, 2, 3, 4, 5] # Calculating the product of the numbers in my_list # using reduce and lambda functions together product = reduce(lambda x, y: x * y, my_list) # Printing output print(f'Product = {product}') # Output : Product = 120 

Puretaan miten vähentää() funktio toimii annetussa esimerkissä:

Reduction()-funktiolla on kaksi argumenttia: funktio ja iteroitava. Tässä tapauksessa käytämme funktiona lambda-funktiota lambda x, y: x * y ja iteroitavana numerolistaa.

  • Lambda-funktio hyväksyy muuttujat x ja y, kertoo ne ja palauttaa tuloksen. Kun lambda-funktio ajetaan alun perin, muuttujat x ja y asetetaan my_list-luettelon ensimmäiselle ja toiselle elementille (eli x = 1 ja y = 2). Lambda-funktio kertoo nämä kaksi lukua ja palauttaa tuloksen (1 * 2 = 2).
  • Kun lambda-funktiota kutsutaan toisen kerran, x asetetaan edellisen kutsun tulokseksi (x = 2) ja y asetetaan numeroluettelon kolmanneksi elementiksi (eli y = 3). Se kertoo nämä kaksi arvoa ja palauttaa tuloksen (2 * 3 = 6).
  • Lambda-funktiota kutsutaan toistuvasti tällä tavalla jokaiselle my_list-elementille, kunnes kaikki elementit on käsitelty. Vähennä()-funktio palauttaa listan kaikkien elementtien tulon, joka sitten määritetään tuotemuuttujaksi 120. Tämä tulo lasketaan seuraavasti: ((((1 * 2) * 3)* 4)* 5) = 120.
  • Lopuksi tulostetaan tuotemuuttujan arvo print()-funktiolla, joka tulostaa 120.

vähentää()-funktio operaattorifunktioilla

Voimme tehdä koodistamme tiiviimmän ja helpommin luettavan käyttämällä operaattoritoimintoja lambda-funktioiden sijaan.

Tässä on esimerkki, joka havainnollistaa operaattorifunktioiden käyttöä vähennysfunktion ensimmäisenä argumenttina:

 # Python program to demonstrate # how to use operator functions with reduce function # Importing reduce function from functools import reduce # Importing operator import operator # Creating lists my_list1 = [1, 2, 3, 4, 5] my_list2 = ['I', 'Love', 'Javatpoint'] # Calculating the sum of the numbers of my_list1 # using reduce and operator.add sum = reduce(operator.add, my_list1) # Calculating the product of the numbers of my_list1 # using reduce and operator.mul product = reduce(operator.mul, my_list1) # Concatenating all the elements in my_list2 # using reduce and operator.concat concated_str1 = reduce(operator.concat, my_list2) # We can achieve the same output by using operator.add concated_str2 = reduce(operator.add, my_list2) # Printing result print(f'Sum of all elements in my_list1 : {sum}') print(f'Product of all elements in my_list1 : {product}') print(f'Concatenated string by using operator.concat : {concated_str1}') print(f'Concatenated string by using operator.add : {concated_str2}') 

Lähtö:

 Sum of all elements in my_list1 : 15 Product of all elements in my_list1 : 120 Concatenated string by using operator.concat : ILoveJavatpoint Concatenated string by using operator.add : ILoveJavatpoint 

Tämä koodi näyttää kuinka reduction()-funktiota ja operaattorifunktioita käytetään matemaattisten ja merkkijonotoimintojen suorittamiseen iteroitavissa Pythonissa.

Reduction()- ja build()-funktioiden eron ymmärtäminen:

Python functools -moduuli tarjoaa funktiot reduction() ja uzkrāšana(), jotka molemmat toimivat iterablesissa vertailukelpoisilla tavoilla.

kuinka ketjuttaa merkkijonoja javassa
  1. The vähentää () ja kerääntyä ()-funktiot ovat samanlaisia ​​siinä mielessä, että ne molemmat hyväksyvät kaksi argumenttia: itse iteroitavan ja funktion, joka kuvaa sille suoritettavaa toimintoa. Tapa, jolla he käsittelevät operaation tuloksia, eroavat kuitenkin eniten toisistaan.
  2. The vähentää ()-funktio suorittaa toiminnon iteroitavan kahdelle ensimmäiselle elementille ennen kuin suorittaa saman toiminnon tulokselle ja seuraavalle elementille. Tätä prosessia toistetaan, kunnes kaikki iteroitavan elementit on käsitelty. Operaation lopullinen tulos palautetaan yhtenä tuloksena.
  3. Samalla kun kerääntyä ()-funktio soveltaa operaatiota myös iteroitavan kahteen ensimmäiseen elementtiin ennen saman toiminnon suorittamista tulokselle ja sitä seuraaville elementeille. Akumulaatio()-funktio palauttaa iteraattorin, joka sisältää operaation välitulokset. Toisin sanoen, kun jokainen elementti on käsitelty, kerääntyä ()-funktio tarjoaa joukon arvoja, jotka edustavat operaation tulosta.

Esimerkki, joka ymmärtää eron akkumulaattorin () ja vähentämisen ():

 # Python Program to demonstrate the difference # between reduce and accumulate # Importing reduce and accumulate function from functools import reduce, accumulate # Creating a list my_list = [1, 2, 3, 4, 5] # Using reduce() to calculate the product of all numbers product = reduce(lambda x, y: x * y, my_list) print(f'Product using reduce() : {product}') # Output: 120 # Using accumulate() to calculate the product of all numbers products = list(accumulate(my_list, lambda x, y: x * y)) print(f'Products using accumulate() : {products}')# Output: [1, 2, 6, 24, 120] 

Tässä esimerkissä meillä on luettelo numeroista [1, 2, 3, 4, 5]. Käytämme vähentää() laskea kaikkien lukujen tulo, joka palauttaa yhden arvon 120.

Käytämme myös kerääntyä () laskea kaikkien lukujen tulo. Yhden arvon palauttamisen sijaan kerääntyä () palauttaa iteraattorin, joka tuottaa välitulosten sarjan: [1, 2, 6, 24, 120].

Eli tärkein ero vähentää() ja kerää() tarkoittaa, että reduktor() palauttaa yhden arvon, joka on operaation lopullinen tulos. Sitä vastoin uzkrāšana() palauttaa iteraattorin, joka tuottaa sarjan välituloksia.