2 回答
TA贡献165条经验 获得超90个赞
首先 in 在Python 中是操作符,具体来说是 成员操作符。就是对于序列(字符串,元组,列表)或集合(set)或映射(字典)这些数据类型 做 成员判断,自然成员判断的返回是 在其中和不在其中,用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 不了,因为不在其中。。。
作为成员操作符 跟另外一个关键字 not 配合,组成不能再优雅的 非成员判断: 不在其中。这对第一次接触这类语法的人,尤其是有其他语言基础的人,有很大的价值观冲击(我就是)。。。代码如下:
if a not in f; do something
然后,更大冲击要来了, JS 在上个版本中也引入了类似的语法。 for xx in xxx: do something with xx or not。
这是对 关键字 in的重载,在这里解释下 重载,代码如下:
print 1+2 3 print "1"+"2" "13"
如上,就是对 加号 + 的重载(对于不同的数据类型,加号表现出不同的行为),严格来说,for 循环中的 in 的重用算不算重载,我也说不清楚。姑且算吧。 代码如下:
for i in a: print i # do something with i for i in a: print "%" # do noting with i
基本就这些吧。
TA贡献14条经验 获得超4个赞
以下只是个人理解,仅供参考:
1、首先 in 关键字,从字面上理解为,在什么里面
2、有了1的理解分析如下代码
s = ["a","b","c"] for v in s: print(v) print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") def test(v): if v in s: print(u'当前值在s集合里面') else: print(u'当前值不在s集合里面') test('b') test("m") print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") def test2(v): if v not in s: print(u'当前值不在s集合里面') else: print(u'当前值在s集合里面') test2('m') test('b')
3、通过如上代码执行结果可以看出,当与for循环一起使用的时候,其实是把集合的元素分别赋值给in之前的变量,而在和if一起使用时就如你所说,判断XXX是否存在于XXX之中(在和if使用时还有一个与此相反的:not in),希望能帮到你如上代码如果是在python2版本中运行可以吧print() 替换为 print
添加回答
举报