は、私はPythonでこれを行うことができ、複数のアイテムの「いない場合」:すべての与えられたリストが空の場合のPython:使用
if not (list1, list2, list3):
...
確認するには?
私はそれ以外はどうすればいいですか?
は、私はPythonでこれを行うことができ、複数のアイテムの「いない場合」:すべての与えられたリストが空の場合のPython:使用
if not (list1, list2, list3):
...
確認するには?
私はそれ以外はどうすればいいですか?
少なくとも1つの要素を持つタプルはブーリアンコンテキストで真実です。つまり、not (list1, list2, list3)
は常に、偽です。
空のリストがfalsyなので、あなたが使用できるビルトインany
機能
if not any([list1, list2, list3]):
# ...
if not (list1 + list2 + list3):
ソリューションの下に示すとおりである。
if not (list1 or list2 or list3):
実際、私はこの論理が間違っていると確信しています - "not"は "or"よりも近くにバインドします。 – Ajean
あなたは、単に行うことができます:
if len(list1) == 0 and len(list2) == 0 and len(list3) == 0:
# ...
複数の変数がすべてNoneまたはFalseのようなものであるかどうかを確認するには、次のようにします。
if not any(list1, list2, list3):
print("All lists are empty")
しかし、これはすべての偽のような値を(None
、False
、""
、[]
、等...)含むリストでは動作しません。
def allitems(lst):
for x in lst:
if isinstance(x, (list, tuple)):
for y in allitems(x):
yield y
else:
yield x
list1 = [None, [False], [False, [False, [None, False], False, None], [False, None]], False]
print(any(allitems(list1))) # => False
これは再帰的リスト/タプルでも機能します。それは、それらのすべての値がFalseのようなものであることを保証します。
それを行うための最も流暢な方法は、all
高階関数を使用することです:
if all(len(l) == 0 for l in (l1, l2, l3)): print "lists are empty"
それはあなたが何を意味するか読めるように述べているように、このチェックは、論理的に、より正確です。
空リストの空ではないタプルなのでテクニックが動作しませんが、空でないタプルは常に「真実」です。 – tdelaney