2013-03-31 25 views
0

所以我而-ING,OR-ING中集合蟒蛇

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

c=a&b將返回一個空集,c=set([]) 但是當我鍵入c = a and b,爲什麼它給我一個set(["b"])

什麼是「and」和「or」在兩套中使用?

回答

6

有幾件事。

  1. 如果你是在Python 2.7版或以上我推薦使用設置文本語法。你可以做a = {"a"}
  2. 關鍵字andor是邏輯運算符。它們用於Python的條件邏輯。 |&運算符是按位進行的;它們由set()類超載。你應該做的是a & b。你可以在這裏閱讀更多:http://docs.python.org/2/library/sets.html#set-objects

如果試圖a = 5 and 6你會看到的結果是6。這就是布爾運算符在很多編程語言中的工作原理,包括Python。它基本上是說「檢查左側的值是否爲True,如果是,則返回右側的值。」

-2

c=a&b返回兩個集合,在這種情況下是沒有什麼的交集。 c=a and b使用標準的Python邏輯運算符。所以當你說c=a and b你基本上說c =(a是真)和(b是真)。天真地,因爲在這種情況下a和b都不是空的並且評估爲真,所以你會期望c爲真。但是,當您使用邏輯運算符設置值時,Python不僅返回True,而且返回最後一個True對象的值,在本例中爲b。

0

關於orand的答案在這裏有點不足。不錯,它們是布爾運算符,與集合無關。它們是短路布爾運算符,並且通常用作爲後備值賦值的捷徑。

下面是它如何工作?

如果你有一個聲明說a or b,你必須評估如果整個聲明是真實的,你最好先搞清楚,如果a是真的開始。如果您發現a爲真,那麼您無需費心評估b,因爲對任何事情的真實指示總是如此。另一方面,如果a爲假,則必須評估b以確定整個陳述是否爲假。此外,不管b是整個a or b聲明的結果。

因此,x = a or b將首先測試如果a爲真,並且如果它是整個右側的語句將成爲a。同樣,如果a爲假,則整個右側將變爲b,因爲b將確定a or b是否爲真,因爲我們知道a爲假。

and也是一個短路操作員。如果a and b,如果a是錯誤的,我們可以停止評估,並說整個陳述是錯誤的,並忽略b。如果a爲真,則整個語句依賴於布爾值b

因此,x = a and b將首先測試a是否爲真。如果a爲真,那麼a and b的結果可簡化爲b,然後語句變爲x = b。如果a是錯誤的,那麼我們可以停止在a,只需用a代替a and b使其成爲x = a即可。

我不認爲我曾見過這種方式使用and,但它確實有效。