【发布时间】:2016-11-15 11:44:50
【问题描述】:
好吧,假设我有一个列表。
l = ['a', '\r\nb']
还有一个要搜索的已知项目。
search = 'b'
如果我输入
search in l
它返回False。但是如果我输入。
for item in l:
search in item
我会收到
False
True
后一个对我来说很有意义,因为'b'在'\r\nb'中。但是为什么哦为什么'b'不在['a', '\r\nb']中
【问题讨论】:
-
搜索到的值不在按值比较的列表中,这是正常的
-
in只会在列表中搜索完全匹配。 -
你真的关心
\r\n吗?为什么不.strip列表中的所有内容,所以你从一个更明智的地方开始?那么'b' in ['a', 'b']将是真的。完全不清楚为什么你会对这种行为感到惊讶——你会期待什么,例如l.index('b')是吗?你认为它应该一直对每个item进行部分匹配吗?这将是非常低效的。 -
那么在
in中使用列表和单个字符串有区别吗? -
@jonrsharpe 是的。当然我可以迭代列表并剥离每个项目。但这不是我想做的。我问的是关键字
in的行为。
标签: python string python-2.7 compare