Форум сайта python.su
18
FishHook
да, результаты разные. Что конкретно хотел ТС я так и не понял, если нужны повторяющиеся слова, то вариант с множеством лучше, если нужны пары предложений в которых есть одинаковые слова, то Ваш. Либо можно допилить мой вариант, сделав декартово произведение предложений, в которых присутствует определенное слово - тада ассимптотика будет либо хуже чем в варианте с циклами либо оверхед
Отредактировано adray (Ноя. 15, 2012 11:58:04)
Офлайн
1
Всё, что мне нужно это поиск на совпадающие названия лекарственных средств из двух списков.
Офлайн
> Вы мой пример видели?
Видел, вообще не понял, что там написано :)
Офлайн
1
adray
return set(filter(lambda w: len(w) > 2, itertools.chain(*map(lambda x: x.split(), names))))
Офлайн
18
paramanДавайте сначала определимся, что нужно делать. Вот у нас есть два списка слов:
Согласен, быть может Вы помогли бы новичку и расписали не в строчку.
names1=['Hell eggs', 'Python 3', 'foo', 'spam filter', 'dirty dirt'] names2=['Python', 'foo', 'Hell yeah', 'clean dirt', 'spam filter']
Офлайн
1
lorienЭх.. Объясню. Есть два списка лекарств:
> Вы мой пример видели?Видел, вообще не понял, что там написано
name_list = ['Abilify', 'Aciphex', 'Actos', 'Abelcet XO', 'Adderall XR', 'Advair Diskus', 'Ambien CR', 'Abelcet XX', 'Aricept', 'Atripla', 'Avandia', 'Avapro', 'Avastin', 'Avelox', 'Avodart', 'Avonex', 'Benicar', 'Boniva', 'Byetta', 'Caduet', 'Celebrex'] name2_list = ['Aammonium alum', 'abacavir', 'abatacept', 'Abbokinase', 'abciximab-injection', 'VV Abelcet', 'Abilify', 'Abreva', 'acamprosate calcium delayed-release tablet', 'Acanya', 'acarbose', 'Accolate', 'AccuNeb', 'Accupril', 'Accuretic', 'Accutane', 'Accutrim', 'ACE Inhibitors', 'acebutolol', 'Aceon', 'Acetadote', 'acetaminophen', 'acetaminophen ', 'acetaminophen-isometheptene-dichloralphenazone', 'Acetasol', 'Acetasol HC', 'acetazolamide-oral', 'acetic acid ', 'acetic acid-otic', 'acetic acid-oxyquinoline-ricinoleic acid-vaginal', 'acetohexamide', 'acetohydroxamic acid-oral', 'acetylcysteine-inhalation', 'acetylcysteine-injection', 'acetylsalicylic acid', 'Acid', 'Aciphex', 'acitretin-oral', 'Actemra', 'Actigall', 'Actimmune', 'Actinex', 'Actiq', 'Activase', 'Actonel', 'Actos', 'Acular', 'Acular LS', 'acyclovir', 'A-Hydrocort']
[('Actos', 'Actos'), ('Abilify', 'Abilify'), ('Aciphex', 'Aciphex')]
Отредактировано paraman (Ноя. 15, 2012 21:09:00)
Офлайн
18
Не один из предложенных вариантов не является общим решением этой задачи.
Например:
['Cianidium Abirvalg', 'Aspirinium tablet'] ['Abirvalg Spirtium', 'Cianidium tablet']
{'Cianidium', 'Abirvalg', 'tablet'}
Отредактировано adray (Ноя. 15, 2012 21:38:29)
Офлайн
7
Весь срач начался изза неадекватного вопроса. Давайте лучше поговорим о том, где и как можно использовать аннотации к функциям.
Офлайн
857
>>> def f(lst): ... return sum(map(str.split, lst), []) ... >>> words1 = ['AC Python', 'Mini GO', 'IronPython .NET', 'F# .Net Good'] >>> words2 = ['Python GO', 'Java AC', 'C# .Net Good', 'VB .Net', 'PHP Shit'] >>> words3 = set(f(words1)) & set(f(words2)) >>> words4 = filter(lambda i: len(i) == 2, words3) >>> list(words4) ['AC', 'GO'] >>>
>>> def f(lst): ... return sum(map(str.split, lst), []) ... >>> words1 = ['Abilify', 'Aciphex', 'Actos', 'Abelcet XO', 'Adderall XR', 'Advair Diskus', 'Ambien CR', 'Abelcet XX', 'Aricept', 'Atripla', 'Avandia', 'Avapro', 'Avastin', 'Avelox', 'Avodart', 'Avonex', 'Benicar', 'Boniva', 'Byetta', 'Caduet', 'Celebrex'] >>> words2 = ['Aammonium alum', 'abacavir', 'abatacept', 'Abbokinase', 'abciximab-injection', 'VV Abelcet', 'Abilify', 'Abreva', 'acamprosate calcium delayed-release tablet', 'Acanya', 'acarbose', 'Accolate', 'AccuNeb', 'Accupril', 'Accuretic', 'Accutane', 'Accutrim', 'ACE Inhibitors', 'acebutolol', 'Aceon', 'Acetadote', 'acetaminophen', 'acetaminophen ', 'acetaminophen-isometheptene-dichloralphenazone', 'Acetasol', 'Acetasol HC', 'acetazolamide-oral', 'acetic acid ', 'acetic acid-otic', 'acetic acid-oxyquinoline-ricinoleic acid-vaginal', 'acetohexamide', 'acetohydroxamic acid-oral', 'acetylcysteine-inhalation', 'acetylcysteine-injection', 'acetylsalicylic acid', 'Acid', 'Aciphex', 'acitretin-oral', 'Actemra', 'Actigall', 'Actimmune', 'Actinex', 'Actiq', 'Activase', 'Actonel', 'Actos', 'Acular', 'Acular LS', 'acyclovir', 'A-Hydrocort'] >>> words3 = set(f(words1)) & set(f(words2)) >>> words4 = filter(lambda i: len(i) == 2, words3) >>> list(words4) [] >>> words3 {'Abilify', 'Abelcet', 'Actos', 'Aciphex'} >>>
Отредактировано py.user.next (Ноя. 16, 2012 08:10:32)
Офлайн
1
py.user.nextспасибо, но в строчку не так понятно. Буду разбираться.
Офлайн