Понимание сравнения множеств
Итак, моя проблема - понять сравнение между списками.
У меня была домашняя работа, чтобы сравнить, есть ли в какой-либо строке все буквы алфавита, поэтому я сделал это:
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")
Хорошо, я получил True, это хорошо. Но другой путь для ответа:
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
непригодный в вашей функции.