首页 > 解决方案 > 为什么“in”运算符能识别子字符串而不识别子列表?

问题描述

为什么这是真的:

'bcd' in 'abcde'

但这是错误的:

[2,3,4] in [1,2,3,4,5]

这些陈述在概念上是相同的,不是吗?运算符是否in对字符串有特殊规则?

标签: python

解决方案


列表可以包含在列表中。

[[2, 3, 4], 2, 3, 4, 5]

其中一次迭代一个元素的外部列表

[2,3,4] in [[2, 3, 4], 3, 4, 5]

给你一个True价值

对于这种情况,字符串没有等效项。

您可以通过子类化列表并更改__contains__@hpaulj 指出的那样创建新类型。

但在开始之前有一些问题?

您希望在其中找到多少次 [2,3,4]?

[[2, 3, 4], 2, 3, 4, 5]

或这个

[[2,3,4], [2],[3],[4],5]

推荐阅读