1

これは簡単だと思いますが、解決策が見えないか、理解できない可能性があります。

私はいくつかのコードを持っています:

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

が正常に動作するかどうかをテストしてmystringmylistます。

ただし、リストがある場合

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

if ステートメントをテストしています。一致が正確である場合にのみ合格するようmystringにします。問題は、 toの部分一致が通過することです。do something with mystringapplesappapplemystringmylist

つまり、上記の例でmystringは、appそれが通過しており、私もそれを望んでいません。これは些細なことだとわかっています。申し訳ありません。

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 に答える