Найти - Пользователи
Полная версия: Поиск на совпадение слов
Начало » Python для новичков » Поиск на совпадение слов
1 2 3
paraman
adray
line 2, in make_set
return set(itertools.chain(*map(lambda x: x.split(), names)))
NameError: global name ‘itertools’ is not defined
adray
paraman
import itertools
lorien
> В общем есть два списка слов, нужно в них найти совпадающие слова. Так более понятно?

for word1 in list1:
for word2 in list2:
if word1 == word2:
print word
adray

lorien, понятно, но
for word1 in list1:
for word2 in list2:
O(n*m)

se1.intersect(set2)
O(n+m)
Это к тому, что автор говорил про большие списки
paraman
adray
for word1 in list1: for word2 in list2: if word1 == word2: print word
Угу, уже разобрался, но спасибо.
lorien
> В общем есть два списка слов, нужно в них найти совпадающие слова. Так более понятно?
Вы мой пример видели?
FishHook
adray
Если списки большие, то лучше из них сделать по множеству:
Мне кажется Вы не очень внимательно посмотрели в мой код
adray
FishHook, отнюдъ, я его даже запускал
У Вас получается два списка маленьких множеств, и пересекается каждое множество из первого с каждым из второго. я предложил объединить все множества из списка в одно
paraman
adray
FishHook, отнюдъ, я его даже запускалУ Вас получается два списка маленьких множеств, и пересекается каждое множество из первого с каждым из второго. я предложил объединить все множества из списка в одно

А как в строчку
return set(itertools.chain(*map(lambda x: x.split(), names)))
вписать ограничения на длину слова? len > 2
adray
paraman
А как в строчку
filter
return set(filter(lambda w: len(w) > 2, itertools.chain(*map(lambda x: x.split(), names))))
Я бы однострочниками не злоупотреблял - когда они километровые, читать их не очень
FishHook
adray
FishHook, отнюдъ, я его даже запускалУ Вас получается два списка маленьких множеств, и пересекается каждое множество из первого с каждым из второго. я предложил объединить все множества из списка в одно
name = ['AC Python', 'Mini GO', 'IronPython .NET', 'F# .Net Good']
name2 = ['Python GO', 'Java AC', 'C# .Net Good', 'VB .Net', 'PHP Shit']
Ваш метод решения не дает сопоставления Предложение–>Слово–>Общее слово
Вы получаете
set(['Python', 'GO', 'AC', '.Net', 'Good'])
Я получаю
[{'name2': 'Python GO', 'name': 'Python AC', 'common': 'Python'}, {'name2': 'AC Java', 'name': 'Python AC', 'common': 'AC'}, {'name2': 'Python GO', 'name': 'GO Mini', 'common': 'GO'}, {'name2': 'C# .Net Good', 'name': '.Net F# Good', 'common': '.Net,Good'}, {'name2': 'VB .Net', 'name': '.Net F# Good', 'common': '.Net'}]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB