Понимание сравнения множеств

Итак, моя проблема - понять сравнение между списками.

У меня была домашняя работа, чтобы сравнить, есть ли в какой-либо строке все буквы алфавита, поэтому я сделал это:

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 непригодный в вашей функции.

Другие вопросы по тегам