分かりにくい表題なのですが、表題の件をpythonで
清楚に書くにはどうすれば良いのか? 疑問に感じました。
もうちょっと具体的に説明すると、フルーツのリスト
fruits = ["Apple", "Banana", "Orange", "Grape"]
があり、"Banana"はフルーツに含まれるか?を調べるには
print("Banana" in fruits)
で "True" を返してくれます。当然だ、バナナはフルーツの王様?だからね。
ここで、バスケットを用意し中にこんな感じで入れておきます。
basket = ["Banana", "Orange"]
バナナは欠かさない!
このバスケットの中身全てが、フルーツに含まれるか?
と言うのが表題の意味です。
最初はこんな感じでイケルんじゃない? と思いました。
print(basket in fruits)
これだと "False" なんです。恐らく言葉にすると
"バスケットはフルーツに含まれるか?"
と言う解釈をされるのでしょう。そりゃFalseです。
こんな事程度で、isFruits関数を用意するのも大げさに
に感じるので・・・中身を取り出しつつ全部確認する
ようにすると、こんな感じかな?
print(all(item in fruits for item in basket))
一個づつ確認して、全部フルーツだったらバスケットの
中身は全てフルーツ ってイメージです。
念の為、確認の為こんな感じに手に持ってみます。
hands = ["Banana", "Cat"]
バナナは欠かすな。
確認してみると
print(all(item in fruits for item in hands))
無事、Falseになります。猫はフルーツじゃない!
・・・よく考えると、リストがセットに変換可能な場合に
限れば、両セットの積をとり、目的のセットと一致すれば
全て含まれている事になるかな?と。
こんな感じです。
print(set(fruits) & set(basket) == set(basket)) print(set(fruits) & set(hands) == set(hands))
allを使った場合と結果は同じです。
とは思いつつ、何かズバリの関数が有るんじゃないかな・・・。