2017-06-23 9 views
2

これらの2つの条件チェックは同じですか?条件簡略化でない場合はPython 3

:私は、彼らが答えたすべての人に同じ

l1 = [] 
l2 = [] 

if not l1 and not l2: 
    print ('y') 

if not (l1 and l2): 
    print ('y') 

感謝をしているかどうかを確認する方法を考えることはできません、私は速く

import time 
l1 = [] 
l2 = [] 

st = time.time() 
for i in range(100000000): 
    if not l1 and not l2: 
     pass 
end = time.time() 
print ('if not l1 and not l2: '+str(end-st)) 

st = time.time() 
for i in range(100000000): 
    if not (l1 or l2): 
     pass 
end = time.time() 
print ('if not (l1 or l2): '+str(end-st)) 

印刷物であるかを確認するためにいくつかの基本的なタイミングを行っています

if not l1 and not l2: 8.533874750137329 
if not (l1 or l2): 7.91820216178894 

答えて

2

彼らは同じではありません。彼らは同等になるようにあなたは、次のように第二の条件を変更する必要があります

l1 = [] 
l2 = [] 

if not l1 and not l2: 
    print ('y') 

if not (l1 or l2): 
    print ('y') 
7

いいえ、それらは同じではありません。 De Morgan's lawsを参照してください。

反例である:

l1 = [0] 
l2 = [] 
1

あなたが同じ、使用または操作になりたい場合は、次の

l1 = [] 
l2 = [] 

if not l1 and not l2: 
    print ('y') 

同等:

if not (l1 or l2): 
    print ('y') 
関連する問題