2017-01-05 13 views
0

は、以下のスクリプトを検討frozenset型:Pythonは:比較

# multipleSmallFrozensets is a list of 7 frozensets of differenet number of string objects 
multipleSmallFrozensets = [ 
    frozenset({'YHR007C', 'YHR042W'}), 
    frozenset({'YPL274W'}), 
    frozenset({'YCL064C'}), 
    frozenset({'YBR166C'}), 
    frozenset({'YEL041W', 'YJR049C'}), 
    frozenset({'YGL142C'}), 
    frozenset({'YJL134W', 'YKR053C'})] 

# singleFrozenset is a frozenset of 3410 string objects 
singleFrozenset = frozenset({'YIL140W','YLR268W','YLR357W','YJL155C','YHR067W', 
'YAL008W','YBR255W','YFR027W','YGR148C','YJR122W','YJL204C','YJL093C','YLR244C', 
'YNL003C','YBR111W-A', ...}) 

# don't forget that i is of type frozenset [just saying!] 
for i in multipleSmallFrozensets: 
     if i <= singleFrozenset: print "First option entered" 
     elif len(i) == 1: print "Second option entered" 
     else: print "Third option entered" 

と神秘的な出力をさ

First option entered 
Second option entered 
Second option entered 
First option entered 
Third option entered 
First option entered 
First option entered 

これらのif-else条件は2例a)のI < = singleFrozenset、aとbのためにチェックしています)len(i)== 1. 2番目の条件は単純です。しかし、一致したケースが1,4,6、および7である最初の状態を把握することはできませんでした。このような場合、これらの固定セット間のリンクを見つけることができませんでした。 理由は何ですか?

+0

注:実際の大きな 'singleFrozenset'変数からもたらされる小さなスライスのため、コードをコピーして貼り付けると異なる結果になります – 7kemZmani

答えて

1

集合演算子<=は、.issubset()メソッドと同等です。 A <= Bは、Aの各要素もBに属している場合にのみtrueです。

+0

言った:Aの_each_要素もBに属しています。 – DyZ