2 回答

TA貢獻(xiàn)165條經(jīng)驗 獲得超90個贊
首先 in 在Python 中是操作符,具體來說是 成員操作符。就是對于序列(字符串,元組,列表)或集合(set)或映射(字典)這些數(shù)據(jù)類型 做 成員判斷,自然成員判斷的返回是 在其中和不在其中,用Python 的說法就是 True , False ,也就是說 xx in xxx 是可以用在 諸如: if xx in xxx, while xx in xxx 等等典型的需要判斷的情況(不止如此,還有更多)。
代碼如下:
a?=?1 b?=?(1,2,3) c?=?[1,2,3] d?=?{1:"a",2:"b",c:"3"} e?=?{1,2,3} f?=?"123" if?a?in?b: ????do?something ????. ????. ????. if?a?in?f: ????do?something?#完全?do?不了,因為不在其中。。。
作為成員操作符 跟另外一個關(guān)鍵字 not 配合,組成不能再優(yōu)雅的 非成員判斷: 不在其中。這對第一次接觸這類語法的人,尤其是有其他語言基礎(chǔ)的人,有很大的價值觀沖擊(我就是)。。。代碼如下:
if?a?not?in?f; ????do?something
然后,更大沖擊要來了, JS 在上個版本中也引入了類似的語法。 for xx in xxx: do something with xx or not。
這是對 關(guān)鍵字 in的重載,在這里解釋下 重載,代碼如下:
print?1+2 3 print?"1"+"2" "13"
如上,就是對?加號 + 的重載(對于不同的數(shù)據(jù)類型,加號表現(xiàn)出不同的行為),嚴(yán)格來說,for 循環(huán)中的 in 的重用算不算重載,我也說不清楚。姑且算吧。 代碼如下:
for?i?in?a: ????print?i?#?do?something?with?i ???? for?i?in?a: ????print?"%"?#?do?noting?with?i
基本就這些吧。

TA貢獻(xiàn)14條經(jīng)驗 獲得超4個贊
以下只是個人理解,僅供參考:
1、首先 in 關(guān)鍵字,從字面上理解為,在什么里面
2、有了1的理解分析如下代碼
s?=?["a","b","c"] for?v?in?s: ????print(v) print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") def?test(v): ????if?v?in?s: ????????print(u'當(dāng)前值在s集合里面') ????else: ????????print(u'當(dāng)前值不在s集合里面') test('b') test("m") print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") def?test2(v): ????if?v?not?in?s: ????????print(u'當(dāng)前值不在s集合里面') ????else: ????????print(u'當(dāng)前值在s集合里面') test2('m') test('b')
3、通過如上代碼執(zhí)行結(jié)果可以看出,當(dāng)與for循環(huán)一起使用的時候,其實是把集合的元素分別賦值給in之前的變量,而在和if一起使用時就如你所說,判斷XXX是否存在于XXX之中(在和if使用時還有一個與此相反的:not in),希望能幫到你如上代碼如果是在python2版本中運行可以吧print() 替換為 print?
添加回答
舉報