Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2013 16:09:42

medelgover
Зарегистрирован: 2013-09-20
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра со списками.

Требуется реализовать следующий алгоритм.

Есть список 1 [el1, el2, el3, el4, el5]
Есть список 2 [el7, el8, el4, el5]

Нужно высчитать кратчайший путь (до первого совпадения) между двумя списками, и объединить 2 списка.
Результат должен получится список 3
 [el1, el2, el3, el4, el8, el7]
Последовательность элементов строгая.

Пробовал через множества
ss = set(list) - set(list2)
ss2 = set(list2) - set(list)
Но при этом получаю два списка без совпадающих элементов, и тем более не могу выбрать первый совпадающий.

Не могу придумать как сделать “красивое” сравнение двух списков. Буду признателен любой помощи.

Отредактировано medelgover (Дек. 11, 2013 17:09:10)

Офлайн

#2 Дек. 11, 2013 16:41:48

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Игра со списками.

Можно пример входных и выходных данных? а то нипанятна



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#3 Дек. 11, 2013 16:43:34

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

Игра со списками.

Сначала неплохо бы пояснить свои чаяния на примере. Я, например, не понял, что такое “кратчайший путь” относительно двух списков.
Дайте несколько примеров списков А, Б и результирующего С и объясните как происходит преобразование.



Офлайн

#4 Дек. 11, 2013 17:08:05

medelgover
Зарегистрирован: 2013-09-20
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра со списками.

Прошу прощенья, не доглядел.

listA = [a,b,v,g,core]
listB = [1,2,3,4,g,core]

Первое совпадение элемента
Соответственно результат будет следующим:

listC = [a,b,v,g,4,3,2,1]

Еще раз прошу извинить за свою невнимательность.

Отредактировано medelgover (Дек. 11, 2013 17:36:37)

Офлайн

#5 Дек. 11, 2013 17:51:48

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

Игра со списками.

Самое тупое решение, которое приходит в голову

a = ['el1', 'el2', 'el3', 'el4', 'el5']
b = ['el7', 'el8', 'el4', 'el5']
def r():
    for x in a:
        yield x
        if x in b:
            break
    for x in b[b.index(x):: -1]:
        yield x
for i in r():
    print i



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version