在扁平序列(例如str,bytes,bytearray等)中,我们可以像容器序列(例如list,tuple,collections.deque等)那样使用in
运算符吗?除了容器序列,还有其他可以使用in
运算符的地方吗?
答案 0 :(得分:2)
in
运算符将对实现__contains__
方法的任何类起作用。
x in y
的实现方式为:
y.__contains__(x)
例如,str
实现in
来搜索子字符串,而不是测试集合匹配项中的单个元素。
答案 1 :(得分:0)
任何类都可以按照所需的任何方式实现__contains__
。例如,子类int
的类可以实现__contains__
,因此它检查数字是否是它表示的整数的因数,例如2 in special_integer(6)
。
我倾向于不同意您对str
,bytes
(显然是bytearray
)的评价。毕竟,它们都是可迭代的。