Python:(sub)字符串等价与列表快速成员资格测试

时间:2011-06-12 15:19:08

标签: python

有人可以向我解释以下内容(python 2.7)

来自解析文件的两个字符串编号:

'410.9' '410.9'(注意尾随空格)

A_LIST = ['410.9 ']

'410.9' in '410.9 '
True

'410.9' in A_LIST
False

解决这个问题没问题 - 只是试着理解为什么会这样。

谢谢!

3 个答案:

答案 0 :(得分:7)

带有两个字符串检查或子字符串的

in,而带有列表的in检查成员资格。

你想要的是[x for x in A_LIST if '419' in x]

答案 1 :(得分:5)

第一个测试是测试第一个字符串是否是第二个字符串的子字符串,第二个测试是测试字符串是否是给定列表的成员。由于它不完全等于列表的任何成员,因此第二个测试返回false。

答案 2 :(得分:4)

这是正确的行为,因为:

  >>>'410.9'=='410.9 '
  >>>False

当您为某个项目的成员资格列表清单时,您实际上正在做类似的事情:

...
for item in A_LIST:
  if item == '410.9':
    return True
...