2 回答

TA貢獻(xiàn)165條經(jīng)驗(yàn) 獲得超90個(gè)贊
首先 in 在Python 中是操作符,具體來說是 成員操作符。就是對(duì)于序列(字符串,元組,列表)或集合(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?不了,因?yàn)椴辉谄渲?。?!?/pre>作為成員操作符 跟另外一個(gè)關(guān)鍵字 not 配合,組成不能再優(yōu)雅的 非成員判斷: 不在其中。這對(duì)第一次接觸這類語法的人,尤其是有其他語言基礎(chǔ)的人,有很大的價(jià)值觀沖擊(我就是)。。。代碼如下:
if?a?not?in?f; ????do?something
然后,更大沖擊要來了, JS 在上個(gè)版本中也引入了類似的語法。 for xx in xxx: do something with xx or not。
這是對(duì) 關(guān)鍵字 in的重載,在這里解釋下 重載,代碼如下:
print?1+2 3 print?"1"+"2" "13"如上,就是對(duì)?加號(hào) + 的重載(對(duì)于不同的數(shù)據(jù)類型,加號(hào)表現(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)驗(yàn) 獲得超4個(gè)贊
以下只是個(gè)人理解,僅供參考:
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)一起使用的時(shí)候,其實(shí)是把集合的元素分別賦值給in之前的變量,而在和if一起使用時(shí)就如你所說,判斷XXX是否存在于XXX之中(在和if使用時(shí)還有一個(gè)與此相反的:not in),希望能幫到你如上代碼如果是在python2版本中運(yùn)行可以吧print() 替換為 print?
添加回答
舉報(bào)