Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2017 00:21:27

for_soul
Зарегистрирован: 2017-01-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

Здравствуйте. Хелп.
Есть два списка в каждом из них одинаковое количество элементов:
1, 1, 2, 3, 4, 4, 4
1, 2, 3, 4, 5, 6, 7

Надо удалить из первого списка дубли и те элементы из второго списка, у которых то же положение.
Результат:
1, 2, 3, 4
1, 3, 4, 5

Элементы списков как бы “взаимосвязаны”.
Или лучше сделать такое через массив?

Отредактировано for_soul (Янв. 25, 2017 00:22:05)

Офлайн

#2 Янв. 25, 2017 01:18:02

for_soul
Зарегистрирован: 2017-01-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

Вот так вот решил. Может есть решение “красивее”?

 i = 0
while i < len(lst1):
    if lst1[i] not in lst1_new:
        lst1_new.append(lst1[i])
        lst2_new.append(lst2[i])
        i += 1
    else:
        i += 1

Офлайн

#3 Янв. 25, 2017 04:13:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

for_soul
Надо удалить из первого списка дубли
Ясно. Примени к списку функцию удаления дублей. Функцию напиши для любого списка.

for_soul
и те элементы из второго списка, у которых то же положение.
Неясно. Когда неясно, нужно сначала всё прояснить, а уже потом писать что-то.



Офлайн

#4 Янв. 25, 2017 11:31:00

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

 a = [1, 1, 2, 3, 4, 4, 4]
b = [1, 2, 3, 4, 5, 6, 7]
for i in range(len(a)-1,-1,-1):
    if a.count(a[i]) >1:
        del a[i]
        del b[i]
print(a,b,sep = '\n')
[1, 2, 3, 4]
[1, 3, 4, 5]

Отредактировано marvellik (Янв. 25, 2017 11:31:54)

Офлайн

#5 Янв. 25, 2017 22:44:52

for_soul
Зарегистрирован: 2017-01-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

py.user.next
Неясно. Когда неясно, нужно сначала всё прояснить, а уже потом писать что-то.
ну, извините, что я недостаточно технически описал задания.
но я уверен, суть вы прекрасно поняли.

Офлайн

#6 Янв. 26, 2017 05:48:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

for_soul
но я уверен, суть вы прекрасно поняли.
Да тебе же говорят, что не поняли ничего. Вот приходит такой какой-нибудь незнайка на форум (это частое явление на любых подобных форумах) и говорит “мне нужна программа такая, какая я точно сам не знаю, но что-то приблизительно вот к этому”, ему тупые начинают писать варианты, а он, как принцесса, сидит, выбирает и говорит “не, этот вариант неправильный - у него там число какое-то проскакивает, и этот вариант неправильный - там не все числа получаются” и тупые ему продолжают писать и писать, пишут десять кодов в итоге, и в итоге получается топик с десятью кодами, которые все неправильные в чём-то, потому что написаны по мутному заданию. И это всё только потому, что незнайка этот точно не описал задачу. Время потеряно, тупые научены, что не надо писать, когда неясно, что именно писать. А незнайка как сидел без кода, так и сидит.

Поэтому через десяток таких незнаек одинадцатому незнайке сразу задают вопрос: ты что имеешь в виду? там можно десятью разными способами это неточное задание решить и получить один и тот же результат, вот только на других числах будет получаться что-то неправильное.
for_soul
из второго списка, у которых то же положение.
Результат:
1, 2, 3, 4
1, 3, 4, 5
Элементы списков как бы “взаимосвязаны”.
Вот это не описание, это какая-то приблизительная муть.



Отредактировано py.user.next (Янв. 26, 2017 05:52:15)

Офлайн

#7 Янв. 26, 2017 13:22:14

for_soul
Зарегистрирован: 2017-01-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

py.user.next
Поэтому через десяток таких незнаек одинадцатому незнайке сразу задают вопрос: ты что имеешь в виду?
не повезло мне стать одиннадцатым)
Ну так проходите мимо, зачем тратите свое время и нервы.
Рабочий код для своего задания я уже сделал, сам, если вы не заметили.
Через час после того как задал вопрос.


Но я вас услышал, впредь постараюсь давать более точные ТЗ.

Офлайн

#8 Янв. 26, 2017 13:41:08

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

Удаление дубликатов из двух списков

for_soul
Но я вас услышал, впредь постараюсь давать более точные ТЗ.
Вам правильно говорят, не надо воспринимать это как личную обиду.
Вот смотрите, идея:
1. Из первого списка делаем такой
 l1 = [1, None, 2, 3, 4, None, None]
2. Зипуем списки
 ll = zip(l2, l1)
получаем
 [(1,1), (2, None), (3, 2), (4, 3), (5, 4), (6, None), (7, None)]
3. Дальше фильтруем и готово.

Четыре строки кода, без явных циклов и поиска вхождения.

Теперь ваше ТЗ. Вы дали для примера список 1, 1, 2, 3, 4, 4, 4. Вы даете явно отсортированную коллекцию, но в задании об этом ни слова. Вы же понимаете, что самый сложный пункт в решени - №1. И от того какие у нас исходные данные отсортированные или нет, в корне зависит решение. Например, если список отсортированный, то я бы сделал перебор списка с конца и сравнивал
 l[n] > l[n-1]
, в случае если False то в итог попадает None. Это решение в один проход без дополнительных переменных, то есть самое эффективное. Но исходя из условий задачи его применять нельзя, потому что не известно действительно ли мы получаем на вход отсортированные данные или это у вас пример неудачный. Поэтому никто не хочет вам помогать, ибо как решить задачу, не зная ограничений.



Отредактировано FishHook (Янв. 26, 2017 13:43:47)

Офлайн

#9 Янв. 26, 2017 14:00:46

for_soul
Зарегистрирован: 2017-01-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление дубликатов из двух списков

FishHook
Но исходя из условий задачи его применять нельзя, потому что не известно действительно ли мы получаем на вход отсортированные данные или это у вас пример неудачный.
спасибо, теперь я понял в чем заключалась проблема.
Пример на самом деле неудачный. Списки без сортировки.

А как из списка без сортировки сделать такой?
  l1 = [1, None, 2, 3, 4, None, None]

Отредактировано for_soul (Янв. 26, 2017 14:05:59)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version