2014-12-04 121 views
-1

計劃1

list=[1,2,3,4] 
A=3 in list 
if A: 
    print('True') 

計劃2

list=[1,2,3,4] 
if A=3 in list: 
    print('True') 

所以我有這兩個程序使用一個布爾值。程序1運行正常,我明白爲什麼,但程序2沒有。我認爲,因爲A=3 in list返回true或false,你可以把它作爲if循環的一部分嵌入,但我猜不是。這是爲什麼?這裏發生了什麼?在程序中嵌入在if語句

+0

您試圖在if條件中分配值。我認爲這是無效的。 – 2014-12-04 07:14:48

+0

可能的重複http://stackoverflow.com/questions/2603956/can-we-have-assignment-in-a-condition – Sriram 2014-12-04 07:18:14

+0

官方文檔中的這一部分將很有用 - https://docs.python.org/ 2/tutorial/datastructures.html#more-on-conditions where it states that _「請注意,在Python中,與C不同,賦值不能在表達式內部發生,C程序員可能會對此抱怨,但它避免了遇到的一類常見問題C程序:當==意圖時,在表達式中鍵入= _ – Sriram 2014-12-04 07:19:25

回答

0

看評論:

計劃1個

list=[1,2,3,4] 
# 3 in list evaluates to a boolean value, which is then assigned to the variable A 
A=3 in list 
if A: 
    print('True') 

計劃2

list=[1,2,3,4] 
# Python does not allow this syntax as it is not "pythonic" 
# Comparison A == 3 is a very common operation in an if statement 
# and in other languages, assigning a variable in an if statement is allowed, 
# As a consequence, this often results in very subtle bugs. 
# Thus, Python does not allow this syntax to keep consistency and avoid these subtle bugs. 
if A=3 in list: 
    print('True') 
3

if A=3 in list:無效語法。您可能正在尋找原始布爾表達式,而不是if 3 in list

另外,不要使用list作爲變量名稱。您將會覆蓋Python提供的實際list方法。

0

它的簡單,你不能使用assignmnent操作如果

喜歡這裏

A=3 

蟒蛇將它讀成assignmnent,並拋出錯誤

0

第一個例子是等價於:

A = (3 in list) 
#i.e. A is boolean, not an integer of value 3. 

第二個例子只是無效的語法。