好的开始让我们说我有一个列表。蟒蛇列表比较字符串项与 r n
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']
好的开始让我们说我有一个列表。蟒蛇列表比较字符串项与 r n
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'
因为在第一种情况下(search in l
),它会尝试找到精确匹配为list
与您search
一词的任何元素。
而当你试图去递归通过每个元素的搭配它的发现在该元素,它succseed找到。
好吧,我明白了。 'in'只看它自己的子集。在我看来,在两个例子中都应该以相同的方式进行比较。我现在明白为什么不是这样。首先,我想我喜欢用\ r \ n做些事情。但它显然不是。这太愚蠢了。 – Poonuts
因为列表项是“a”和'\ r \ NB的,当你在列表中进行搜索,它的每个项目==“B”,其FALSE比较。
“b”为在列表中的第二项的子串。 “B”的“\ r \ NB”为TRUE(你的第二个测试),因为它搜索字符串“B”的'\ r \ NB的
谢谢。教学解释。 – Poonuts
搜索值不是按值进行比较的列表,这是正常的 – RomanPerekhrest
'in'只会在列表中搜索完全匹配。 –
你真的关心'\ r \ n'吗?为什么不把'.strip'中的所有东西都放在列表中,所以你是从一个更明智的地方开始的?然后['a','b']'中的''b'将是真实的。目前还不完全清楚为什么你会对这种行为感到惊讶 - 你会期待什么? 'l.index('b')'是?你认为它应该在所有时间对每个“项目”进行部分匹配吗?这将是非常低效的。 – jonrsharpe