在 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
我找不到任何明显的理由来说明为什么检查有序(甚至不可变)可迭代对象“中”的元素会与不同类型的有序、不可变可迭代对象表现不同。
最佳答案
对于列表和元组等容器类型,x in container
检查x
是否是容器中的项目。因此,对于 ours in theirs
,Python 检查 ours
是否是 theirs
中的项目,并发现它是 False。
请记住,列表可以包含列表。 (例如 [['a','b','c'], ...]
)
>>> ours = ['a','b','c']
>>> theirs = [['a','b','c'], 1, 2]
>>> ours in theirs
True
关于python - "in"列表与字符串中的语句行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305813/