2017-03-14 12 views
0

私の問題は、リスト間の比較を理解することです。セット比較の理解

いくつかの文字列がアルファベットのすべての文字を持っている場合、私は比較する宿題を持っていたので、私はこれをしなかった:

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]を、私は本当だ、罰金のthats。しかし、その答えのための他の方法は次のとおりです。

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") 

だから、この「< =」私は理解して傾けること。セットされたユニークなリストの手紙を手紙と比較しますか?それとも、その長さを比較するだけですか?参加しないとスペースが得られないからです。 "set(str.lower())"だけがすべての文字をソートしない場合、どうすれば "< ="が比較されますか?

誰かが私に助けてくれることを願っています。

答えて

1

セットのオペレータ<=は、LHSのオペランドがRHSのオペランドであるかどうかをチェックします。

より冗長

:サイドノートで

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

、あなたの関数内の組み込みstrが使用できなくなるしないように名前としてstrを使用しないように注意してください。

+0

これはきれいな答えだった。ハハハありがとう! – MoscrowDev

関連する問題