переписать для l oop функцию более простым способом? - PullRequest
0 голосов
/ 13 апреля 2020

Я новичок в python, и мне было просто интересно, можно ли это переписать проще и без использования циклов for? Пример ожидаемого значения для этой функции приведен ниже кода.

def valid_words(dictionary, sentence):
    x =sentence.split()
    y = dictionary.split()
    newlist = []

    for i in x:
      for j in y:
         if i == j:
            newlist.append(i)
    return newlist

Моя функция должна принимать 2 строки: одна содержит действительные слова, а другая - потенциальные слова. Выходными данными должен быть список слов, которые присутствуют в обеих строках и являются точными совпадениями, разделенными пробелами.

Например, допустимые слова "a aa apple banana pear strawberry mango" и потенциальные слова "hello mango and banana yum apple!" вернут ["mango", "banana"]

Обратите внимание, что "apple!" не соответствует действительному слову из-за того, что восклицательный знак является частью слова.

1 Ответ

0 голосов
/ 14 апреля 2020
  1. Разделите обе строки в пустом месте, превратив их каждую в set. Набор подобен списку, за исключением того, что не может быть кратных одного и того же значения, а порядок не отслеживается.
  2. Возвращает объединение этих двух наборов. Думайте об этом как о создании диаграммы Венна.

Обратите внимание, что я выбираю , а не , используйте слово dictionary в качестве имени моей переменной, поскольку в Python, который имеет особое значение.

def valid_words(valid, potential):
    return list(set(valid.split()) & set(potential.split()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...