Unterschied zwischen bool(prod( ... )) und all( ... )Python

Python-Programme
Guest
 Unterschied zwischen bool(prod( ... )) und all( ... )

Post by Guest »

Da ich in Python nicht „nativ“ bin, habe ich bool(prod( ... ) verwendet, um zu überprüfen, ob alle Elemente in einer Liste mit booleschen Werten True sind. Ich habe die Eigenschaft genutzt , diese booleschen Werte werden auf 0 und 1 abgebildet und da jede 0 in einem Produkt das gesamte Produkt zu 0 macht, hat es meinen Bedürfnissen entsprochen.
Jetzt bin ich über alles gestolpert( ... ). Wie aus diesem Programm hervorgeht, geben sie die entsprechende Ausgabe zurück:

Code: Select all

from random import randint
from math import prod

# create a array where each element has a 10% chance of being False, else True
l_bool=[randint(0,9)>0 for _ in range(10)]

# check if all elements are True
bool(prod(l_bool)),all(l_bool)
Ich verstehe, dass prod() vielseitiger ist, da es das Zwischenergebnis des Produkts speichern muss und „speziell für die Verwendung mit numerischen Werten gedacht ist“.< /p>
Aus der Dokumentation von all() geht hervor, dass es die Eingaben iteriert, bis ein False erkannt wird und wahrscheinlich für genau diese Aufgabe optimiert ist.
Allerdings würde ich davon ausgehen, dass prod() intern funktioniert gibt auch 0 zurück, sobald irgendetwas gefunden wird, und mein Verständnis von Iterables ist, dass es keinen großen Overhead erzeugen sollte, um das Zwischenergebnis der Multiplikation im Speicher zu halten.
Ich verstehe das alles( ) sollte hier verwendet werden, aber gibt es einen signifikanten Unterschied, den ich übersehe? Ich denke, ich muss es sein, da bool(prod( ... ) deutlich (~45 %) langsamer ist:

Code: Select all

import time

n=100_000

t0 = time.time()

for _ in range(n):
bool(prod(randint(0,9)>0 for _ in range(10)))

t_bool_prod=time.time()-t0

t1=time.time()

for _ in range(n):
all(randint(0,9)>0 for _ in range(10))

t_all=time.time()-t1

print(f"bool(prod( ... )) takes {round(100*((t_bool_prod/t_all)-1),2)}% longer!")

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post