Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113

Как реализовать такой поиск по вложенным спискам

04.05.2020, 04:20. Показов 2180. Ответов 16

Студворк — интернет-сервис помощи студентам
доброе время!

столкнулся с проблемой, не могу решить

есть список типа:

Python
1
2
lis1 = ['Abriviatura Iv - Fly Away', "Alex Deeper - London's Heart", 'Alex Spite - We Can Fly', 'Alina Baraz - Fallin', 'Anton Ishutin - Giving Up', "Anton Ishutin - Her Name (Ivan Starzev 'nature' Remix)", 'Anton Ishutin - Your Sun (Nico Aviario Remix)', 'Caglayan - Soul Case', 'Chris Peker - Phoenix (Fly & Sasha Fashion Remix)', 'Sharapov - Invisible Love (The Distance & Igi Remix)', 'Cienfue - Life In The Tropics', 'Dee Pete - One More Look (Aurolab Remix)', 'Costa Mee - Two Feet On The Ground (J. Damour Remix)', 'Costa Mee - Love In Undercover', 'Costa Mee - Never Gonna Be The Same', 'Damon Steele - All I Know', 'Deeperise -
Make Me Alive (Liva K Remix)', 'Deepjack - Let Me Say (Cram Remix)']
и есть список списков типа:

Python
1
2
list2 = [['Anton', 'Ishutin', 'Your', 'Sun', 'Nico', 'Aviario', 'Remix'], ['Caglayan', 'Soul', 'Case'], ['Chris', 'Peker', 'Phoenix',
'Fly', 'Sasha', 'Fashion', 'Remix'], ['Sharapov', 'Invisible', 'Love', 'The', 'Distance', 'Igi', 'Remix'], ['Cienfue', 'Life', 'In', 'The', 'Tropics'], ['Dee', 'Pete', 'One', 'More', 'Look', 'Aurolab', 'Remix'], ['Costa', 'Mee', 'Two', 'Feet', 'On', 'The', 'Ground', 'J.', 'Damour', 'Remix'], ['Costa', 'Mee', 'Love', 'In', 'Undercover'], ['Costa', 'Mee', 'Never', 'Gonna', 'Be', 'The', 'Same']]
мне нужно организовать поиск используя значения подСписков второго списка
но таим образом, чтобы учитывались лишь вхождения сразу всех элементов в любую строку списка 1

и записывать случаи MATCH в новый список result

то есть первый запрос должен быть: 'Anton', 'Ishutin', 'Your', 'Sun', 'Nico', 'Aviario', 'Remix'
ищутся по всем строкам первого списка
если есть строка, в которой присутствуют все слова из этого запроса, тогда, записывать в result
и так далее остальные

Добавлено через 39 минут
** записывать в result найденную строку
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2020, 04:20
Ответы с готовыми решениями:

Альтернатива вложенным спискам
Как написать подобное в джс? val result = ArrayList<ArrayList<Int>>()

Как реализовать такой поиск?
Помогите как реализовать поиск который будет описан ниже, а так же подскажите где быстрее он будет обрабатываться со считыванием из...

А такой поиск как реализовать?
Добрый день. Есть программа использующая БД на Аccess (через ADO) . Все поля хранятся как текстовые. Одно из полей - "номер сводной...

16
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 08:19
Циклы по элементам списков:
Python
1
2
if all(map(lambda s: list1_item.find(s) > -1, list2_item)):
    save
0
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 09:53  [ТС]
не встречал такого применения ещё....

как это интегрировать не понимаю (

редактор подчёркивает:
list1_item.find(s)
list2_item.find(s)
save

Добавлено через 14 минут
что есть save в данном случае?

Добавлено через 16 минут
кручу, кручу... но ничего не выходит.. не хватает знаний

Добавлено через 12 минут
подскажите, как мне создать объекты
list1_item
list2_item

?

Добавлено через 28 минут
не понимаю, что не так....

Python
1
2
3
4
5
6
7
result = []
 
for list1_item in list1:
    for sublist in list2:
        for list2_item in sublist:
            if all(map(lambda s: list1_item.find(s) > -1, list2_item)):
                result.append(item)
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 15:48
3й цикл лишний
Откуда взялся item?

Добавлено через 35 секунд
Во втором замените sublist на list2_item
1
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 16:10  [ТС]
Спасибо! даже уже отчаялся

так и думал что перемудрил)

теперь работает!


---------



а может ещё подскажите куда дописать, чтобы регистр не учитывался

в данный момент код такой:

Python
1
2
3
4
for list1_item in list1:
    for list2_item in list2:
        if all(map(lambda s: list1_item.find(s) > -1, list2_item)):
            result.append(list2_item)
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 16:30
Python
1
lambda s: list1_item.lower().find(s.lower()) > -1
0
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 16:32  [ТС]
а чтобы вывести ненайденные?
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 16:33
Python
1
print(result)
0
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 16:37  [ТС]
Python
1
print(result)
выводит пересечения
как и задумано

а теперь вот остался ещё последний шаг, как вывести ненайденное

я попытался создать result_no таким вот образом
Python
1
2
3
4
        if all(map(lambda s: list1_item.lower().find(s.lower()) > -1, list2_item)):
            result.append(list2_item)
        else:
            result_no.append(list2_item)

но он мне выводит что-то не то... всё из list1 исходного
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 16:42
Покажите полный код. Я не вижу где вы делаете вывод
0
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 16:44  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
result = []
result_no = []
 
 
for list1_item in list1:
    for list2_item in list2:
        if all(map(lambda s: list1_item.lower().find(s.lower()) > -1, list2_item)):
            result.append(list2_item)
        else:
            result_no.append(list2_item)
 
for item in result:
    print(item)
for item in result_no:
    print(item)
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 16:52
и что вы ожидаете увидеть в result_no?
0
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 16:57  [ТС]
те запросы которые не привели к MATCH

пример
сейчас искал:
список1 = 200 000 строк
список2 = 32 строки

30 взяты из списка1 (то есть точно должны дать MATCH
2 из головы, их в списке1 нет

результат = найдено 30 строк (то есть то что есть и там и там)
и это отлично (ради этого всё и затевалось)

но я понял, что мне также нужно получить результат_NO = 2 строки, которые не найдены....
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 17:01
Python
1
2
3
4
5
6
7
for list1_item in list1:
    for list2_item in list2:
        if all(map(lambda s: list1_item.lower().find(s.lower()) > -1, list2_item)):
            result.append(list2_item)
        else:
            if list2_item not in result_no:
                result_no.append(list2_item)
оно?
0
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 17:23  [ТС]
все выводит, как и у меня... (все чтобы были отправлены в запрос из списка 2)

а нужно чтобы была разница
Исходник - Найденное [result] = result_no
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
04.05.2020, 17:31
тогда вариант с map не подойдет, читайте про filter или используйте просто цикл по элементам
0
1 / 1 / 1
Регистрация: 13.04.2020
Сообщений: 113
04.05.2020, 19:20  [ТС]
сделал через множества...

спасибо в за помощь в решении основной проблемы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2020, 19:20
Помогаю со студенческими работами здесь

Как реализовать такой поиск..?
Всем привет, наткнулся я тут на интерсное видео http://www.youtube.com/watch?v=3cJinHSSkuI - уж больно понравился способ поиска и открытия...

Сложно ли реализовать такой поиск
Подскажите сложно ли реализовать поиск, и если не трудно то как его реализовать это типо расширенный поиск #min-price=1000 ...

Поиск по спискам
Всем привет! Задача состоит в следующем: Нужно реализовать экспертную систему по выбору велосипеда. К примеру программа спрашивает...

Поиск по вложенным письмам
Добрый день. Возникла потребность осуществлять поиск по вложенным файлам (файлы – письма .msg). Ранее сделал скрипт который проходится по...

Как реализовать такой элемент
Как реализовать такой элемент в меню? (Элементы: Строки с текстом, изображением)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru