def check():
if [1,2,3]:
return [2,3,4]
check()
[2, 3, 4]
[1,2,3]
はリストですが、真または偽のブール式ではないと思いますか?しかし、なぜ関数はリスト([1,2,3])
を真と考えていますか?後のステートメントは何ですか?
def check():
if [1,2,3]:
return [2,3,4]
check()
[2, 3, 4]
[1,2,3]
はリストですが、真または偽のブール式ではないと思いますか?しかし、なぜ関数はリスト([1,2,3])
を真と考えていますか?後のステートメントは何ですか?
if
またはwhile
の条件として、任意の式を使用できます。式の真理値がどのように評価されるかについては、https://docs.python.org/2.4/lib/truth.htmlを参照してください。で述べたよう
python documentation on "Truth Value Testing":
以下の値は偽であると考えられる:
[...]
- 任意の空のシーケンス、例えば、
''
、()
、[]
。[...]
他のすべての値が真であると見なされ- 多くの種類のオブジェクトは常に真であるようにします。
だから、任意の空でないリストはTrue
として評価され、(それはたとえばnumpy.ndarray
のためのように、__bool__
または__len__
方法だ、それが例外をスローしない場合)pythonオブジェクトはブールコンテキストで評価することができます。
私が知る限り、空リスト/タプル、空の文字列(技術的には文字のリストとも見なすことができる)、または数字0以外の任意の型の表現は "True"とみなされます。
PS楽しい事実と同じように、0.000001という数字はTrueを返します。
多分このような何か?
def checkList():
if all(x in list2 for x in list1):
return [ 2,3,4 ]
list1= [ 1,2,3 ]
list2= [ 1,2,3 ]
print(checkList(list1,list2))
あなたは本当にこれを必要と
ここを見てSAnyway:?https://docs.python.org/3/library/stdtypes.html#truth-value-testing
任意の[空でないリスト](https://docs.python.org/3/library/stdtypes.html#truth-バリューテスト)は真と見なされます。 – MSeifert
ブール式が必要な場合は、任意の式を使用できます。 – Barmar
[真理値のテスト](https://docs.python.org/3/library/stdtypes.html#truth-value-testing)をチェックして、Pythonで真と偽とみなされるものを確認してください。 –