0

ので、私は持っています

a=set(["a"])
b=set(["b"])

c=a&bは空のセットを返しますが、c=set([]) 入力c = a and bすると、なぜset(["b"])

and」と「or」を 2 セットで使用するとどうなりますか?

4

4 に答える 4

6

いくつかのこと。

  1. Python 2.7 以降を使用している場合は、setliteral 構文を使用することをお勧めします。あなたはただ行うことができますa = {"a"}
  2. キーワードandandorは論理演算子です。これらは、Python の条件付きロジックに使用されます。|and&演算子はビット単位です。それらはset()クラスによってオーバーロードされます。あなたがすべきことはa & b. ここで詳細を読むことができます: http://docs.python.org/2/library/sets.html#set-objects

試してみるa = 5 and 6と、結果は6. これが、ブール演算子が Python を含む多くのプログラミング言語で機能する方法です。本質的には、「左側の値が に評価されるかどうかを確認しTrue、そうであれば、右側の値を返す」と言っています。

于 2013-03-31T00:45:11.177 に答える
-1

a and b返品中bです。これはブール論理であり、交差集合ではありません。Python では、以下は「偽の」オブジェクトです: NoneFalse0""[]、など。とはどちらも「真の」オブジェクトであるためtuple()、から が返されます。set([])abba and b

http://docs.python.org/2/tutorial/datastructures.html#more-on-conditions

これの 1 つの使用法は、次のように変数を初期化することです。

def f(x):
    x = x or MyObject()
于 2013-03-31T00:47:33.363 に答える
-2

c=a&b2 つの集合の交点を返します。この場合は何もありません。c=a and b標準の Python 論理演算子を使用します。つまり、c=a and b基本的には c=(a が真) かつ (b が真) と言っているということです。この場合、a と b の両方が空ではなく、True と評価されるため、単純に、c が True であることが期待されます。ただし、論理演算子を使用して値を設定すると、Python は True だけでなく、最後の True オブジェクトの値 (この場合は b) を返します。

于 2013-03-31T00:48:38.880 に答える