計劃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語句
list=[1,2,3,4]
A=3 in list
if A:
print('True')
list=[1,2,3,4]
if A=3 in list:
print('True')
所以我有這兩個程序使用一個布爾值。程序1運行正常,我明白爲什麼,但程序2沒有。我認爲,因爲A=3 in list
返回true或false,你可以把它作爲if循環的一部分嵌入,但我猜不是。這是爲什麼?這裏發生了什麼?在程序中嵌入在if語句
看評論:
計劃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')
if A=3 in list:
無效語法。您可能正在尋找原始布爾表達式,而不是if 3 in list
。
另外,不要使用list
作爲變量名稱。您將會覆蓋Python提供的實際list
方法。
它的簡單,你不能使用assignmnent操作如果
喜歡這裏
A=3
蟒蛇將它讀成assignmnent,並拋出錯誤
第一個例子是等價於:
A = (3 in list)
#i.e. A is boolean, not an integer of value 3.
第二個例子只是無效的語法。
在Python中,賦值是語句而不是表達式,因此它們不返回任何值。 (更多詳細信息:Why does Python assignment not return a value?)
您試圖在if條件中分配值。我認爲這是無效的。 – 2014-12-04 07:14:48
可能的重複http://stackoverflow.com/questions/2603956/can-we-have-assignment-in-a-condition – Sriram 2014-12-04 07:18:14
官方文檔中的這一部分將很有用 - 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