python - "in"列表与字符串中的语句行为

标签 python substring iterable in-operator

在 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/

相关文章:

python - 如何将向量转换为数组以进行频繁模式分析

c# - 使用正则表达式捕获分隔符内的子字符串并排除字符

python - 如何利用 Scrapy 中的项目管道,按照每个 Spider 类定义的特定顺序保留/导出字段项目

python - 自定义 Django 模型字段中的 "object has no attribute"

C# 子串和 ToUpper

java - 如何检查字符串是否包含列表中的子字符串?

python - tqdm:提取已过去的时间+剩余时间?

python - itertools.chain.from_iterable 适用于嵌套数字列表,但不适用于字符串列表?

Python:就地映射

python - python资源中的软硬限制