簡體   English   中英

Python - 模條操作作為條件

[英]Python - Modulo Operation as a Conditional

我在lambda函數中看到了modulo運算符的這種用法,用於測試primality。 有人可以解釋為什么只要i大於x就會執行以下語句,如果這不是我所知的實際布爾語句。 如果分子大於分母,無論它們是否是因子,它也適用於除法。

if x % i:
    # Execute random foolishness

注意:我只在Python和Java中嘗試過這個,所以如果這個用另一種語言工作,我很抱歉,因為它可能不是特定於語言的問題。

Python將非零值視為True,因此if x % i:if x % i != 0: 這只是測試x是否可被i整除的快速方法。

對於數字對象,python假設每個非零值為True ,零為假,因此if x % i:將為真,直到x不能被i整除,否則它將為False

>>> bool(-1)
True
>>> bool(3)
True
>>> bool(0)
False

對於列表或字符串等其他對象也有這樣的標准,如果你有一個空列表或字符串,python會將其評估為False,而對於其他情況,它將為True。

>>> bool(0)
False
>>> bool([])
False
>>> bool('')
False
>>> bool('a')
True
>>> bool([1])
True
>>> bool([''])
True

實際上它是真理價值測試

可以測試任何對象的真值,用於if或while條件或下面的布爾運算的操作數。 以下值被視為false:

  • 沒有

  • 任何數字類型的零,例如,0,0.0,0j。

  • 任何空序列,例如'',(),[]。

  • 任何空映射,例如{}。

用戶定義的類的實例,如果類定義__bool__()__len__()方法,則該方法返回整數零或bool值False。

所有其他值都被認為是真的 - 因此許多類型的對象始終是真的。

該聲明簡明扼要:

if x % i != 0

只要模數不為零,這個if就會執行。 如果一個數字可以被i整除,它就不會執行if塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM