python将列表中的字符串与以开头的项进行比较\r\n
好吧,假设我有一张清单python将列表中的字符串与以开头的项进行比较\r\n,python,string,python-2.7,compare,Python,String,Python 2.7,Compare,好吧,假设我有一张清单 l = ['a', '\r\nb'] 和要搜索的已知项目 search = 'b' 如果我打字 search in l 它返回False。但是如果我打字 for item in l: search in item 我会收到 False True 后者对我来说很有意义,因为'b'在'\r\nb'中。但是为什么在['a','\r\nb']中没有'b',因为在第一种情况下(在l中搜索),它会试图找到列表中的任何元素与搜索词的精确匹配 当您尝试递归地遍历每个元素
l = ['a', '\r\nb']
和要搜索的已知项目
search = 'b'
如果我打字
search in l
它返回False
。但是如果我打字
for item in l:
search in item
我会收到
False
True
后者对我来说很有意义,因为'b'
在'\r\nb'
中。但是为什么在['a','\r\nb']
中没有'b'
,因为在第一种情况下(在l中搜索),它会试图找到列表中的任何元素与搜索词的精确匹配
当您尝试递归地遍历每个元素并匹配它在成功查找的元素中的查找时。因为在第一种情况下(在l中搜索)
),它将尝试使用搜索词查找列表中的任何元素的精确匹配
当您尝试递归地遍历每个元素并匹配它在成功找到的元素中的查找时。因为您的列表项是“a”和“\r\nb”,当您在列表中搜索时,它会比较每个项==“b”和它的FALSE
“b”是列表中第二项的子字符串“\r\nb”中的b”为TRUE(您的第二个测试),因为它搜索“\r\nb”中的子字符串“b”,因为您的列表项是“a”和“\r\nb”,当您在列表中搜索时,它会比较每个项==“b”和它的FALSE
“b”是列表中第二项的子字符串“\r\nb”中的b”为真(您的第二个测试),因为它搜索“\r\nb”中的子字符串“b”搜索的值不在列表中,通过值比较,这是正常的,
中的只会搜索列表中的精确匹配项。您真的关心\r\n
?为什么不.strip
列表中的所有内容,这样您就可以从一个更合理的位置开始了?那么['a','b']
中的'b'将为真。你对这种行为感到惊讶的原因还不清楚——你会期望什么,例如l.index('b')
?你认为它应该一直在每个项目上进行部分匹配吗?这将是非常低效的。因此,与单个字符串相比,在
中使用列表中的会有区别吗?@jornsharpe是的。当然,我可以迭代列表并删除每个项目。但这不是我想做的。我在询问
中关键字的行为。列表中没有按值比较搜索的值,这是正常的
中的只会搜索列表中的精确匹配项。您真的关心\r\n
?为什么不.strip
列表中的所有内容,这样您就可以从一个更合理的位置开始了?那么['a','b']
中的'b'将为真。你对这种行为感到惊讶的原因还不清楚——你会期望什么,例如l.index('b')
?你认为它应该一直在每个项目上进行部分匹配吗?这将是非常低效的。因此,与单个字符串相比,在
中使用列表中的会有区别吗?@jornsharpe是的。当然,我可以迭代列表并删除每个项目。但这不是我想做的。我在问
中关键字的行为。啊,好吧,我明白了<代码>在
中只查看它自己的子集。在我看来,这两个例子的比较方式应该是相同的。我现在明白为什么不是这样。首先,我想我应该做点什么\r\n。但显然不是这样。那太傻了。啊,好吧,我明白了<代码>在
中只查看它自己的子集。在我看来,这两个例子的比较方式应该是相同的。我现在明白为什么不是这样。首先,我想我应该做点什么\r\n。但显然不是这样。那太傻了,谢谢你。教学解释,谢谢。教学解释。