[英]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.