ある単語が別の単語の末尾であるような単語の対があるかどうか調べるという場合、
例えば、文字列の集合
word = {"IIIII","KOKOKO","SAsta","sta"}
があり、"sta"が"SAsta"の末尾であるため、結果は"True(真)"となります。
それで私が作成したコードがこれです。
any(m != w and re.search(str(m+"$"),w) for w in word)
re.serch( a,b )は、bとaが一致したら"True"と返すのですが、
今回注目は"$"です。
上の例において、"m"は"lllll"から順々に代入されていき、
mと"$"を結合します。
"$"は、文字列のmが末尾にあるということを指します。
そのため、今回の問題を解くために使用しました。
any( ) は一回でも"True"が出力された場合、"True"と出力する関数です。
という感じですね。
これと同様のことを数行で書いてあるのがこれです。
またまたわからないものが...
starmap,permutations,endswith
後日、追記します。(すいません。)