Wat is het nut van float(‘inf’) in Python?

Ik vraag me alleen af, wat heeft het voor zin om een ​​variabele een oneindige waarde in een programma te laten opslaan? Is er daadwerkelijk gebruik en is er een geval waarin het de voorkeur verdient om foo = float('inf')te gebruiken, of is het slechts een klein fragment dat ze erin hebben gestoken om het erin te plaatsen ?


Antwoord 1, autoriteit 100%

Het fungeert als een onbegrensde bovenwaarde ter vergelijking. Dit is handig om de laagste waarden voor iets te vinden. bijvoorbeeld het berekenen van padroutekosten bij het doorkruisen van bomen.

bijv. Het “goedkoopste” pad vinden in een lijst met opties:

>>> lowest_path_cost = float('inf')
>>> # pretend that these were calculated using some worthwhile algorithm
>>> path_costs = [1, 100, 2000000000000, 50]
>>> for path in path_costs:
...   if path < lowest_path_cost:
...     lowest_path_cost = path
...
>>> lowest_path_cost
1

als u float('inf')niet tot uw beschikking had, welke waarde zou u dan gebruiken voor the initial lowest_path_cost? Zou 9999999voldoende zijn — float('inf')verwijdert dit giswerk.


Antwoord 2, autoriteit 14%

Van de documentatie:

Er zijn veel drijvende-komma-functies toegevoegd. De float()-functie zal nu
verander de string nan in een IEEE 754 Not A Number-waarde, en +inf en
-inf in positief of negatief oneindig. Dit werkt op elk platform met IEEE 754-semantiek. (Bijgedragen door Christian Heimes; uitgave)
1635.)

Zie ook dit: Werken met Infinity en NaN’s


Antwoord 3, autoriteit 5%

float('inf')

Zoals vermeld in het antwoord hierboven, wordt float('inf')gebruikt voor het instellen van een variabele met een oneindig grote waarde.
In eenvoudige bewoordingen stelt het de waarde in op +ve infinty.

ALTERNATIEFkunnen we gebruik maken van de volgende verklaring,

import sys
least_value = sys.maxsize

De sys.maxsizewordt vaker gebruikt, om aanvankelijk een grote waarde in te stellen. Wanneer het ons doel is om de minste waarde te vinden uit een bepaalde reeks waarden.

Ook voor het geval we de grootste waarde willen vinden uit een gegeven set waarden. We kunnen het volgende gebruiken.

import sys
greatest_value = -sys.maxsize - 1
# logic for comparing with rest of values

De -sys.maxsize - 1wordt gebruikt om de beginwaarde in te stellen op -ve oneindig.


Antwoord 4, autoriteit 2%

float('inf')kan worden gebruikt in de vergelijking, waardoor de code eenvoudiger en duidelijker wordt. In merge sort kan bijvoorbeeld een float('inf')worden toegevoegd aan het einde van subarrays als een schildwachtwaarde. Verwar niet met het gebruik van oneindig in wiskunde, programmeren gaat tenslotte niet alleen over wiskunde.


Antwoord 5

In plaats van 0 te gebruiken en vervolgens negatieve getallen te gebruiken als die er zijn, kunnen float(“+inf”) en float(“-inf”) helpen om positieve of negatieve oneindigheid te vergelijken, zoals:

Zoek de grootste waarde in een woordenboek:

def max_key(my_dict):
    largest_key = float("-inf")
    largest_value = float("-inf")
    for key, value in my_dict.items():
      if value > largest_value:
          largest_value = value
          largest_key = key
    return largest_key
print(max_key({1:100, 2:1, 3:4, 4:10}))      # should print 1
print(max_key({"a":100, "b":10, "c":1000}))  # should print "c"

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes