Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python字符串(带空格)匹配_Python_String_Python 3.x_String Comparison - Fatal编程技术网

python字符串(带空格)匹配

python字符串(带空格)匹配,python,string,python-3.x,string-comparison,Python,String,Python 3.x,String Comparison,在尝试删除字符串列表中的几个字符串时,我尝试使用类似以下的简单代码: >>> s = ['a b', 'c d', 'e f', 'g h'] >>> for i in s: ... if i is not 'e f': ... print(i) ... a b c d e f # this should not get printed, right? g h 我无法理解潜在的行为? 你能解释一下吗?因为下面的内容似乎合乎逻辑,

在尝试删除字符串列表中的几个字符串时,我尝试使用类似以下的简单代码:

>>> s = ['a b', 'c d', 'e f', 'g h']
>>> for i in s:
...     if i is not 'e f':
...         print(i)
...
a b
c d
e f    # this should not get printed, right?
g h
我无法理解潜在的行为? 你能解释一下吗?因为下面的内容似乎合乎逻辑,上面的内容也应该相应地起作用

>>> if 'a b' is not 'a b':
...     True
... else:
...     False
...
False
>>> s = ['a', 'c', 'e', 'g']
>>> for i in s:
...     if i is not 'e':
...         print(i)
...
a
c
g

空间是否需要特殊处理?我缺少什么?

不是一种基于身份的测试;当它在字符串上工作时,这是由于字符串的内部存储或小字符串缓存造成的;这是一个永远不应该依赖的实现细节

通常不要使用
is
/
is not
,除非与
None
进行比较,直到您真正理解它在做什么。你想要
=这里,哪一个(两个对象代表相同的逻辑信息?),而不是
不是
,这两个对象(都是指完全相同的对象?)


如果你想强迫它工作,你可以做一些可怕的事情,比如显式地
插入所有涉及的字符串,但这并不能节省任何工作(这项工作是花在插入字符串上的),而且这通常是不受欢迎的。

不是一种基于身份的测试;当它在字符串上工作时,这是由于字符串的内部存储或小字符串缓存造成的;这是一个永远不应该依赖的实现细节

通常不要使用
is
/
is not
,除非与
None
进行比较,直到您真正理解它在做什么。你想要
=这里,哪一个(两个对象代表相同的逻辑信息?),而不是
不是
,这两个对象(都是指完全相同的对象?)

如果你想强迫它工作,你可以做一些很糟糕的事情,比如显式地
intern
ing所有涉及的字符串,但这并不能节省任何工作(这项工作是花在对它们进行实习上的),这通常是不赞成的