2013-04-15 9 views
17

notコマンドを使用せずにリストが空であるかどうか調べるにはどうしたらいいですか?ここ
は、私が試したものです:`not`コマンドを使用せずにリストが空であることを確認してください

if list3[0] == []: 
    print "No matches found" 
else: 
    print list3 

私はダムのミスをすれば、非常に初心者にはとても恐縮しています。

+3

not' 'が悪いのか? – halex

+1

学校の仕事のために、私は今は知りません。私は前に答えを探していたので、それについてしか知りません。 – user2240288

+0

[リストが空であるかどうかをチェックする最良の方法]の複製が可能です(http://stackoverflow.com/questions/53513/best-way-to-check-if-a-list-is-empty) –

答えて

53

# Good 
if not list3: 

# Okay 
if len(list3) == 0: 

# Ugly 
if list3 == []: 

# Silly 
try: 
    next(iter(list3)) 
    # list has elements 
except StopIteration: 
    # list is empty 

あなたはAN場合、他の両方を持っている場合は、可能性も再オーダー例:

if list3: 
    # list has elements 
else: 
    # list is empty 
+0

実際、空のリストはブール値の文脈では' False'です。 'len()'を明示的にテストする必要はありません。 –

+2

フードの下では、 '1'と' 2'が実際にほとんど同じことをしていることに注意してください。 –

+0

@ sr2222申し訳ありません。 Python 2.xの構文エラーのためコメントを削除しました。 Python 3.xでは、list3 else print( "一致するものが見つかりませんでした") 'を実行できました。 – Aya

1

長さを確認してください。優先順に

l = [] 
print len(l) == 0 
+0

ありがとう、長さがチェックされています:) – user2240288

6

リスト場合は、見つけます

>>> bool([]) 
False 
>>> bool([0])  
True 

2番目のケースでは0はFalseですが、リストには何かが含まれているため、[0]がTrueです。 (あなたは、すべてのfalseyのものを収容するためのリストをテストallanyを使用する場合:liの任意の項目がtruthyある場合any(e for e in li)はTrueです。)これは、このイディオムになり

:によると

if li: 
    # li has something in it 
else: 
    # optional else -- li does not have something 

if not li: 
    # react to li being empty 
# optional else... 

PEP 8、これは適切な方法である:

• For sequences, (strings, lists, tuples), use the fact that empty sequences are false.

Yes: if not seq: 
    if seq: 

No: if len(seq) 
    if not len(seq) 

リストはtryを使用することで、既存の特定のインデックスを持っている場合は、テスト:

>>> try: 
... li[3]=6 
... except IndexError: 
... print 'no bueno' 
... 
no bueno 

ですから、これにあなたのコードの順序を逆にすることもできます。

ここ
if list3: 
    print list3 
else: 
    print "No matches found" 
-1

if len(list3) == 0: 
    print "No matches found" 
関連する問題