2017-03-14 1 views
0

Also, mein Problem ist, Vergleich zwischen Listen zu verstehen.Verstehen Vergleich Vergleich

hatte ich eine Hausaufgaben zu vergleichen, wenn einige Zeichenfolge, die alle Buchstaben des Alphabets hat, so dass ich tat dies:

import string 


def ispangram(str): 

    letters = ''.join(str.split()).lower() 
    unique_letters = set(letters) 
    sorted_list = list(sorted(unique_letters)) 
    str_alphabet = ''.join(sorted_list) 

    alphabet = string.ascii_lowercase 

    if str_alphabet == alphabet: 
     print(True) 
    else: 
     print(False) 


ispangram("The quick brown fox jumps over the lazy dog") 

Ok, ich habe Stimmt, das ist in Ordnung. Aber die andere Art und Weise für die Antwort lautet:

import string 


def ispangram(str): 
    alphabet = string.ascii_lowercase 
    alphaset = set(alphabet) 

    return alphaset <= set(str.lower()): 


ispangram("The quick brown fox jumps over the lazy dog") 

Also dieses „< =“, die ich verstehen kann nicht. Es vergleicht Buchstabe für Buchstabe in der festgelegten eindeutigen Liste? Oder vergleichen Sie einfach die Länge davon? Weil ich ohne Verbindung auch Space bekomme. Und wie funktioniert "< =" vergleichen, wenn nur "set (str.lower())" nicht jeden Buchstaben sortiert?

Hoffe jemand könnte mir helfen, vielen Dank!

Antwort

1

Der Operator <= für Sätze prüft, ob der Operand auf der LHS eine Teilmenge der auf der RHS ist.

Mehr verbosely:

alphaset.issubset(my_str.lower()) # issubset takes any iterable 

Auf einer Seite zur Kenntnis, darauf achtet, nicht str als Namen zu verwenden, um nicht den eingebauten str unbrauchbar in Ihrer Funktion zu machen.

+0

das war eine schön klare Antwort hahaha Danke! – MoscrowDev