在Python中,询问字符串中是否存在子字符串非常简单:
>>> their_string = 'abracadabra'
>>> our_string = 'cad'
>>> our_string in their_string
True
但是,检查这些相同的字符是否“在”列表中失败:
>>> ours, theirs = map(list, [our_string, their_string])
>>> ours in theirs
False
>>> ours, theirs = map(tuple, [our_string, their_string])
>>> ours in theirs
False
我找不到任何明显的原因来解释为什么在一个有序的(甚至是不可变的)iterable中检查元素的行为与另一个不同类型的有序的、不可变的iterable不同。你知道吗
你想看看“cad”是否在字符串列表中的任何字符串中吗?它会像这样:
对于列表和元组等容器类型,
x in container
检查x
是否是容器中的项。因此,使用ours in theirs
,Python检查ours
是否是theirs
中的项,并发现它是False。你知道吗记住,列表可以包含一个列表。(例如
[['a','b','c'], ...]
)在Python文档中,https://docs.python.org/2/library/stdtypes.html对于序列:
对于用户定义的类,
__contains__
方法实现这个in
测试。list
和tuple
实现了基本概念。string
增加了“substring”的概念。string
是基本序列中的一个特例。你知道吗相关问题 更多 >
编程相关推荐