私は、演算子の中のPythonについて少し混乱しています。Pythonの "in"集合演算子
もし私がPythonといくつかのインスタンスbでセットを持っていれば、 "b in s"は "b == xが真であるようなsの要素xがある"ということを意味しますか?
私は、演算子の中のPythonについて少し混乱しています。Pythonの "in"集合演算子
もし私がPythonといくつかのインスタンスbでセットを持っていれば、 "b in s"は "b == xが真であるようなsの要素xがある"ということを意味しますか?
はい、しかしでもはhash(b) == hash(x)
を意味するので、項目の平等はそれらを同じにするには不十分です。
そうです。あなたは、このようなインタプリタでそれを試みることができる:
>>> a_set = set(['a', 'b', 'c'])
>>> 'a' in a_set
True
>>>'d' in a_set
False
Fyi、 'sets'は推奨されていません。 'set()'はかなりの時間の間組み込みです。 – ThiefMaster
もちろん、ああ。申し訳ありません:私は私のサンプルを変更します... –
これは非常に良いテストではありません。なぜなら文字列定数はしばしばインターンされるからです( 'a = 'a'; b = 'a'; aはb')。私は 'a =(1,2,3)で試しました。 b =(1,2,3); a == b;ハッシュ(a)==ハッシュ(b); aはbである。 a in set([b]) 'を実行します。 – Philipp
ストリングス、彼らはset
タイプではありませんが、スクリプトで検証中に貴重なin
性質を持っている:
yn = input("Are you sure you want to do this? ")
if yn in "yes":
#accepts 'y' OR 'e' OR 's' OR 'ye' OR 'es' OR 'yes'
return True
return False
私は、これはあなたがよりよく理解するのに役立ちます願っていますこの例でのin
の使用。
これはセットではありません。文字列も変更できません。 –
私は何を考えていたのか分かりません...あなたは正しいです。 – Droogans
'...または 'e'または 'es'または 's''。この無意味な間違いを削除するだけと考えてください。 – Quuxplusone
はい、そうであっても簡単なイテレータであってもかまいません。たとえば、次のように イテレータとして例:同様に
a=set(['1','2','3'])
for x in a:
print ('This set contains the value ' + x)
チェックとして:編集した
a=set('ILovePython')
if 'I' in a:
print ('There is an "I" in here')
:むしろ、リストや文字列
これはセットと何が関係していますか? –
よく、私はリストや文字列でも、同様のプロパティを持つと見なすことができます。それらは要素の集まりです。 –
いいえ、セットにはシーケンスが含まれない包含チェックのための追加条件があります。 –
よりもセットが含まれるように編集したあなたは数学者か?非常に複雑な方法で単純なものを記述する;) – ThiefMaster
コンピュータ科学者。ドキュメントに「xのメンバーシップをテストする」と書かれているので、ちょっと混乱しています。私には、「インスタンスxはsに含まれている」または「xと同じ値を持つインスタンスに存在している」ことを意味する可能性があります。私はこれがアイデンティティか同等かどうかはわかりません。 – Dejas
@Dejas:Pythonには2つの演算子Equalityの比較とIDの比較があることを知っているので、それぞれを確認する実験を構築できるはずです。あなたがその実験を投稿した場合、それは役に立ちます。 –