Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2012 10:00:41

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

adray
line 2, in make_set
return set(itertools.chain(*map(lambda x: x.split(), names)))
NameError: global name ‘itertools’ is not defined

Офлайн

#2 Ноя. 15, 2012 10:07:21

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

paraman
import itertools

Офлайн

#3 Ноя. 15, 2012 10:07:23

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Поиск на совпадение слов

> В общем есть два списка слов, нужно в них найти совпадающие слова. Так более понятно?

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

Отредактировано lorien (Ноя. 15, 2012 10:07:37)

Офлайн

#4 Ноя. 15, 2012 10:12:59

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Поиск на совпадение слов


lorien, понятно, но

for word1 in list1:
for word2 in list2:
O(n*m)

se1.intersect(set2)
O(n+m)
Это к тому, что автор говорил про большие списки

Офлайн

#5 Ноя. 15, 2012 10:14:26

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

adray
for word1 in list1: for word2 in list2: if word1 == word2: print word
Угу, уже разобрался, но спасибо.
lorien
> В общем есть два списка слов, нужно в них найти совпадающие слова. Так более понятно?
Вы мой пример видели?

Офлайн

#6 Ноя. 15, 2012 10:20:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

adray
Если списки большие, то лучше из них сделать по множеству:
Мне кажется Вы не очень внимательно посмотрели в мой код



Офлайн

#7 Ноя. 15, 2012 10:36:38

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

FishHook, отнюдъ, я его даже запускал
У Вас получается два списка маленьких множеств, и пересекается каждое множество из первого с каждым из второго. я предложил объединить все множества из списка в одно

Офлайн

#8 Ноя. 15, 2012 10:47:53

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

adray
FishHook, отнюдъ, я его даже запускалУ Вас получается два списка маленьких множеств, и пересекается каждое множество из первого с каждым из второго. я предложил объединить все множества из списка в одно

А как в строчку
return set(itertools.chain(*map(lambda x: x.split(), names)))
вписать ограничения на длину слова? len > 2

Офлайн

#9 Ноя. 15, 2012 11:06:52

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

paraman
А как в строчку
filter
return set(filter(lambda w: len(w) > 2, itertools.chain(*map(lambda x: x.split(), names))))
Я бы однострочниками не злоупотреблял - когда они километровые, читать их не очень

Офлайн

#10 Ноя. 15, 2012 11:09:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Поиск на совпадение слов

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'}]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version