ので、私は持っています
a=set(["a"])
b=set(["b"])
c=a&b
は空のセットを返しますが、c=set([])
入力c = a and b
すると、なぜset(["b"])
「and
」と「or
」を 2 セットで使用するとどうなりますか?
ので、私は持っています
a=set(["a"])
b=set(["b"])
c=a&b
は空のセットを返しますが、c=set([])
入力c = a and b
すると、なぜset(["b"])
「and
」と「or
」を 2 セットで使用するとどうなりますか?
いくつかのこと。
a = {"a"}
。and
andor
は論理演算子です。これらは、Python の条件付きロジックに使用されます。|
and&
演算子はビット単位です。それらはset()
クラスによってオーバーロードされます。あなたがすべきことはa & b
. ここで詳細を読むことができます: http://docs.python.org/2/library/sets.html#set-objects試してみるa = 5 and 6
と、結果は6
. これが、ブール演算子が Python を含む多くのプログラミング言語で機能する方法です。本質的には、「左側の値が に評価されるかどうかを確認しTrue
、そうであれば、右側の値を返す」と言っています。
a and b
返品中b
です。これはブール論理であり、交差集合ではありません。Python では、以下は「偽の」オブジェクトです: None
、False
、0
、""
、[]
、など。とはどちらも「真の」オブジェクトであるためtuple()
、から が返されます。set([])
a
b
b
a and b
http://docs.python.org/2/tutorial/datastructures.html#more-on-conditions
これの 1 つの使用法は、次のように変数を初期化することです。
def f(x):
x = x or MyObject()
c=a&b
2 つの集合の交点を返します。この場合は何もありません。c=a and b
標準の Python 論理演算子を使用します。つまり、c=a and b
基本的には c=(a が真) かつ (b が真) と言っているということです。この場合、a と b の両方が空ではなく、True と評価されるため、単純に、c が True であることが期待されます。ただし、論理演算子を使用して値を設定すると、Python は True だけでなく、最後の True オブジェクトの値 (この場合は b) を返します。