2017-01-05 10 views
0

рассмотрим следующий сценарий:Python: frozensets сравнение

# 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 

Это если-иначе условия проверки для двух случаев а) я < = singleFrozenset, и б) len (i) == 1. Второе условие простое; однако я не мог понять первое условие, когда случаи, в которых совпадают, равны 1, 4, 6 и 7. Я не мог найти связь между этими замороженными наборами в этих случаях! Любая идея почему?

+0

Примечание: копирование и вставка данного кода даст разные результаты из-за небольшого фрагмента, который я привез из реальной большой переменной «singleFrozenset» – 7kemZmani

ответ

1

Оператор установки <= эквивалентен методу .issubset(). A <= B истинно тогда и только тогда, когда каждый элемент A также принадлежит B.

+0

Так же, как я сказал: элемент _each_ из A также принадлежит B. – DyZ