• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Сравнение списков без учета одной переменной

Автор Vashnaemnik, 11.11.24, 14:46:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Vashnaemnik

Добрый день форумчане. До последнего думал что сам смогу разобраться, но уже голова кипит. Надеюсь на вашу помощь.
У меня есть списки, их может быть сколько угодно
list_1.append((DN, PN, Dn_patrubok, S_patrubok, GOST, Isp, Obratka, Prokladka, Otmetka, oboznachenie_mesta, Vilet, Povorotnaya_zaglushka))Мне нужно удалить повторяющиеся
def remove_duplicate(start,oldlist,newlist):
        if start==len(oldlist):return newlist
        if oldlist[start] not in newlist:
            newlist.append(oldlist[start])
        return remove_duplicate(start+1,oldlist,newlist)
    res=remove_duplicate(0,list_1,[])
Но загвоздка в том, что в этом списке есть переменная "Otmetka". При всех одинаковых переменных, она может быть разной. Она мне дальше нужна для построения.
Возможно ли сделать сравнение списков без учета переменной "Otmetka"?
Что бы она оставалась в списке, но не учувствовала в сравнении.

Михаил88

#1
Пример.
Я сделал через срез. Т. е. взял срез от 0-го индекса до предпоследнего, чтобы «Otmetka» не входила в диапазон.
Если «Otmetka» стоит в середине списка, то посмотрите здесь, как ее не брать в расчет при проверке.
https://translated.turbopages.org/proxy_u/en-ru.ru.9c953940-6732d712-8081dc1a-74722d776562/https/stackoverflow.com/questions/30757538/how-to-slice-middle-element-from-list
+ Благодарностей: 1

Vashnaemnik

Цитата: Михаил88 от 12.11.24, 07:10:46Пример.
Я сделал через срез. Т. е. взял срез от 0-го индекса до предпоследнего, чтобы «Otmetka» не входила в диапазон.
Если «Otmetka» стоит в середине списка, то посмотрите здесь, как ее не брать в расчет при проверке.
https://translated.turbopages.org/proxy_u/en-ru.ru.9c953940-6732d712-8081dc1a-74722d776562/https/stackoverflow.com/questions/30757538/how-to-slice-middle-element-from-list
Спасибо Михаил. Очень надеюсь, что когда-нибудь буду твоего уровня.
Мы немного по другому сделали. Чтобы не просто удалялись строки ,в которых некоторые данные равны, но чтобы те которые удалял, их индексы прикреплял к строке, с которой повторяется.
Это в дальнейшем нам нужно, что бы при вставки штуцеров, программа понимала какие построенные файлы вставлять.
# рекурсия (удаление повторяющихся штуцеров)
    def remove_duplicate(start,oldlist,newlist):
        if start==len(oldlist):
            return newlist
        count = 0
        for newlist_1 in newlist:
            if oldlist[start][1:-1] != newlist_1[1:]:
                count += 1
            else:
                newlist_1[0].append(((oldlist[start][0][0]), oldlist[start][-1]))
        if count == len(newlist):
            newlist.append((oldlist[start][:-1]))
            newlist[-1][0].append(((oldlist[start][0][0]), oldlist[start][-1]))
        return remove_duplicate(start+1,oldlist,newlist)

    res=remove_duplicate(0,list_1,[])

    for i in range(len(res)):
        res[i][0].pop(0)