Python :子字符串等效性与列表快速成员资格测试

问题描述

|| 有人可以向我解释以下内容(python 2.7) 来自解析文件的两个字符串号: \'410.9 \' \'410.9 \'(注意尾随空格)
A_LIST = [\'410.9 \']

\'410.9\' in \'410.9 \'
True

\'410.9\' in A_LIST
False
解决这个问题没有问题-只是想了解为什么会这样。 谢谢!     

解决方法

        这是正确的行为,因为:
  >>>\'410.9\'==\'410.9 \'
  >>>False
当您查看某项商品的会员清单时,您实际上是在做这样的事情:
...
for item in A_LIST:
  if item == \'410.9\':
    return True
...
    ,        带有两个字符串检查或子字符串的
in
,带有列表的
in
检查成员资格。 你想要的是
[x for x in A_LIST if \'419\' in x]
    ,        第一个测试正在测试第一个字符串是否是第二个字符串的子字符串,第二个测试正在测试该字符串是否是给定列表的成员。由于它不完全等于列表的任何成员,因此第二个测试返回false。