1

我确信这很简单,但我看不到或可能无法理解解决方案。

我有一些代码:

if any (mystring in s for s in mylist)
     do something with mystring

我正在测试的地方,看看是否mystringmylist,这工作正常。

但是,如果我有清单

['apples','pears','chickens']

我正在测试 if 语句,我希望它仅在匹配准确的情况下通过,即mystring应该通过并且do something with mystring只有 with apples,而不是appor apple。问题是mystringto的部分匹配mylist正在通过。

即在上面的例子中,如果mystringapp通过了,我也不想要它。我知道这是微不足道的,所以很抱歉。

4

3 回答 3

3

我认为你应该这样做

if mystring in mylist:
  do something with mystring
于 2012-11-08T21:47:54.520 回答
2

如果您只想测试它们是否相等,您可以这样做:

if any (mystring == s for s in mylist):
     do something with mystring

但是您可以将其简化为仅检查您的字符串是否在列表中,如下所示:

if mystring in mylist:
     do something with mystring
于 2012-11-08T21:47:40.920 回答
1

只需使用相等运算符而不是in

if any (mystring == s for s in mylist)
     do something with mystring

操作符“in”可以在序列中找到一个项目,但它对字符串的行为不同——从 ePython 2.3 IIRC 开始——当序列是字符串(或 unicode)时,它也会匹配子字符串。

因此,如果您只是想检查一个单词是否在列表中,in就可以了-如

if "apple" in ["apple", "pear", "berry"]:

所以,而不是if any (mystring in s for s in mylist)只做 if mystring in mylist

于 2012-11-08T21:46:40.363 回答