ฉันจะแสดงจำนวนอนันต์ในไพ ธ อนได้อย่างไร ไม่ว่าคุณจะป้อนหมายเลขใดในโปรแกรมไม่ควรมีจำนวนมากกว่าการแสดงอินฟินิตี้นี้
ฉันจะแสดงจำนวนอนันต์ในไพ ธ อนได้อย่างไร ไม่ว่าคุณจะป้อนหมายเลขใดในโปรแกรมไม่ควรมีจำนวนมากกว่าการแสดงอินฟินิตี้นี้
คำตอบ:
ใน Python คุณสามารถ:
test = float("inf")
ใน Python 3.5 คุณสามารถทำสิ่งต่อไปนี้
import math
test = math.inf
แล้ว:
test > 1
test > 10000
test > x
จะเป็นจริงเสมอ นอกจากแน่นอนตามที่ระบุไว้ x ยังเป็นอนันต์หรือ "น่าน" ("ไม่ใช่ตัวเลข")
นอกจากนี้ (หลาม 2.x เท่านั้น) ในการเปรียบเทียบกับEllipsis
, float(inf)
เป็นเลสเบี้ยนเช่น:
float('inf') < Ellipsis
จะกลับมาจริง
Ellipsis
ซึ่งเปรียบเทียบได้มากกว่าทุกสิ่งรวมถึงอินฟินิตี้ float("inf") < Ellipsis
ส่งคืน True
math.inf < ...
หรือfloat('inf') > Ellipsis
พ่นTypeError: unorderable types: float() < ellipsis()
อย่างน้อยสำหรับฉัน
ตั้งแต่ Python 3.5 คุณสามารถใช้math.inf
:
>>> import math
>>> math.inf
inf
ดูเหมือนว่าไม่มีใครพูดถึงเรื่องลบอนันต์อย่างชัดเจนดังนั้นฉันคิดว่าฉันควรจะเพิ่ม
เพื่อบวกอนันต์ (เพียงเพื่อความสมบูรณ์):
math.inf
สำหรับอินฟินิตี้ลบ:
-math.inf
ฉันไม่รู้ว่าคุณกำลังทำอะไร แต่float("inf")
ให้อินฟินิตี้ลอยซึ่งให้คุณมากกว่าจำนวนอื่น ๆ
มีอินฟินิตี้ในห้องสมุด NumPy from numpy import inf
คือ: -inf
อินฟินิตี้ที่จะได้รับในเชิงลบหนึ่งก็สามารถเขียน
อีกวิธีที่สะดวกกว่าคือการใช้Decimal
คลาส:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')
ผลตอบแทนTrue
มันเหมือนกันมาก
float('inf') is float('inf')
กลับมาFalse
เหมือนกัน
float('inf') is float('inf')
-> False
เพียงแค่ถือได้ว่าพวกเขาเป็นวัตถุที่แตกต่างกับกรณีที่แตกต่างกัน แต่ไม่ว่าเนื้อหาภายในที่แตกต่างกัน - เป็นจริง @nemesisdesign แหลมถือหุ้นเพื่อfloat('int') == float('int')
True
นี่เป็นปัญหาเดียวกันกับการเปรียบเทียบวัตถุที่ไม่แน่นอนเช่น [1,2,3] คือ [1,2,3] และ [1,2,3] == [1,2,3] ซึ่งเรียงลำดับเท็จ and True .. ข้อมูลเพิ่มเติมดูได้ที่: stackoverflow.com/questions/2988017/…
ใน python2.x มีแฮ็คสกปรกที่ให้บริการตามวัตถุประสงค์นี้ (ไม่เคยใช้เว้นแต่จำเป็นจริงๆ):
None < any integer < any string
ดังนั้นการตรวจสอบi < ''
ถือสำหรับจำนวนเต็มใดTrue
ๆi
มันถูกคัดค้านอย่างสมเหตุสมผลใน python3 ตอนนี้การเปรียบเทียบดังกล่าวจบลงด้วย
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
นอกจากนี้ถ้าคุณใช้ SymPy คุณสามารถใช้ sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
เป็นต้น
math.inf
มีประโยชน์ในฐานะที่เป็นค่าเริ่มต้นในปัญหาการปรับให้เหมาะสมเพราะมันทำงานได้อย่างถูกต้องกับขั้นต่ำเช่นmin(5, math.inf) == 5
. ยกตัวอย่างเช่นในขั้นตอนวิธีการเส้นทางที่สั้นที่สุดคุณสามารถตั้งค่าระยะทางที่ไม่เป็นที่รู้จักmath.inf
โดยไม่จำเป็นต้องกรณีพิเศษหรือถือว่าขอบเขตบนNone
9999999
ในทำนองเดียวกันคุณสามารถใช้-math.inf
เป็นค่าเริ่มต้นสำหรับปัญหาการขยายใหญ่สุด