平面序列可以在python中使用'in'运算符吗?

时间:2018-07-05 18:24:47

标签: python containers

在扁平序列(例如str,bytes,bytearray等)中,我们可以像容器序列(例如list,tuple,collections.deque等)那样使用in运算符吗?除了容器序列,还有其他可以使用in运算符的地方吗?

2 个答案:

答案 0 :(得分:2)

in运算符将对实现__contains__方法的任何类起作用。

x in y

的实现方式为:

y.__contains__(x)

例如,str实现in来搜索子字符串,而不是测试集合匹配项中的单个元素。

请参见Override Python's 'in' operator?

答案 1 :(得分:0)

  1. 任何类都可以按照所需的任何方式实现__contains__。例如,子类int的类可以实现__contains__,因此它检查数字是否是它表示的整数的因数,例如2 in special_integer(6)

  2. 我倾向于不同意您对strbytes(显然是bytearray)的评价。毕竟,它们都是可迭代的。