一部のコードでバグが発生しました。2つのリストの間に "and"を使用すると、(エラーではなく)2番目のリストが表示されるのはなぜですか?
[x for x in range(3, 6) and range(0, 10)]
print x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
someList and someOtherList
が何をするか疑問に思う、私は実験
(この文を書くの正しい方法は、問題の一部ではありません):(間違った)ラインは類似していました。今まで渡された最後のパラメータに結果を設定しているようだ:
x = range(0,3) # [0, 1, 2]
y = range(3, 10) # [3, 4, 5, 6, 7, 8, 9]
z = range(4, 8) # [4, 5, 6, 7]
print x and y # [3, 4, 5, 6, 7, 8, 9]
print y and x # [0, 1, 2]
print z and y and x # [0, 1, 2]
私は、これはが便利です何かを書くことができるという意図しない結果であることを前提としていますが、私はどのように見て本当にないんだけどここでは "and"演算子のセマンティクスが適用されています。
経験上、Pythonは演算子をサポートしていないもの(つまり、TypeErrorを吐き出しているもの)に演算子を適用しないため、はとなるべきではないというエラーがあります。 -ed。私が間違いを起こさないという事実は、私が行方不明になっていることを私に伝えることです。
私には何が欠けていますか? list and list
はなぜ許可された操作ですか?そして、この動作で何か「有用な」ものがありますか?
質問はブール値についてですが、答えは関係なく、種類の適用 –
おかげ@TimCastelijns – KidneyChris
私はリンクの質問は、問題がちょうどブールリスト(それは任意のリストだ)ではないことは言うことができると思いますが、私は本当にないんだことここにたくさん追加します。重複して閉じるのは楽しいです。 – KidneyChris