web-dev-qa-db-ja.com

「not」コマンドを使用せずにリストが空かどうかを確認する

Notコマンドを使用せずにリストが空かどうかを確認するにはどうすればよいですか?
これが私が試したことです。

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

私は非常に初心者ですので、間抜けな間違いをしたらすみません。

19
user2240288

優先順に:

# 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

Ifとelseの両方がある場合は、ケースを並べ替えることもできます。

if list3:
    # list has elements
else:
    # list is empty
62
John Kugelman

リストが空かどうかは、その「真実」をテストすることでわかります。

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

2番目の場合は0はFalseですが、リスト[0]は何かを含むためTrueです。 (すべての偽物を含むリストをテストしたい場合は、 all または any を使用します。any(e for e in li)は、liは真実です。)

これは、このイディオムになります:

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 によると、これは適切な方法です。

•シーケンス(文字列、リスト、タプル)の場合、空のシーケンスが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"
7
dawg

長さを確認してください。

l = []
print len(l) == 0
1
Ali Afshar