成员测试员算符 in 用于成员测试,即测试一个对象是否为另一个对象的元素。
print(3 in [1, 2, 3]) # 测试3是否存在于列表[1,2,3]中
print([3] in [1, 2, 3])
print(5 in range(1, 10, 1)) # range()用来生成指定指定范围数字的内置函数
print('abc' in 'abcdefg') # 子字符串测试
for i in (3, 5, 7):
print(i, end='\t')
同一性测试运算符(identity comparison)is 用来测试两个对象是否是同一个,如果是则返回 True,否则返回 False。如果两个对象是同一个,两者具有相同的内存地址。
s = 'abcd'
t = 'abcd'
print(s == t, s is t, id(s), id(t))
print(3 is 3)
x = [300, 300, 300] # 基于值的内存管理,同一个值在内存中只有一份
print(x[0] == x[1], x[0] is x[1])
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b, a is b, id(a), id(b)) # 上面形式创建的x和y不是同一个列表对象
print([4, 5, 6] is [4, 5, 6])
a.append(4)
print(a, b)
a = b # a和b指向同一个对象
print(a is b)
a.append(4)
print(a, b)