好的開始讓我們說我有一個列表。蟒蛇列表比較字符串項與 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