Найти - Пользователи
Полная версия: Удаление дубликатов из двух списков
Начало » Python для новичков » Удаление дубликатов из двух списков
1
for_soul
Здравствуйте. Хелп.
Есть два списка в каждом из них одинаковое количество элементов:
1, 1, 2, 3, 4, 4, 4
1, 2, 3, 4, 5, 6, 7

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

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

 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
py.user.next
for_soul
Надо удалить из первого списка дубли
Ясно. Примени к списку функцию удаления дублей. Функцию напиши для любого списка.

for_soul
и те элементы из второго списка, у которых то же положение.
Неясно. Когда неясно, нужно сначала всё прояснить, а уже потом писать что-то.
marvellik
 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]
for_soul
py.user.next
Неясно. Когда неясно, нужно сначала всё прояснить, а уже потом писать что-то.
ну, извините, что я недостаточно технически описал задания.
но я уверен, суть вы прекрасно поняли.
py.user.next
for_soul
но я уверен, суть вы прекрасно поняли.
Да тебе же говорят, что не поняли ничего. Вот приходит такой какой-нибудь незнайка на форум (это частое явление на любых подобных форумах) и говорит “мне нужна программа такая, какая я точно сам не знаю, но что-то приблизительно вот к этому”, ему тупые начинают писать варианты, а он, как принцесса, сидит, выбирает и говорит “не, этот вариант неправильный - у него там число какое-то проскакивает, и этот вариант неправильный - там не все числа получаются” и тупые ему продолжают писать и писать, пишут десять кодов в итоге, и в итоге получается топик с десятью кодами, которые все неправильные в чём-то, потому что написаны по мутному заданию. И это всё только потому, что незнайка этот точно не описал задачу. Время потеряно, тупые научены, что не надо писать, когда неясно, что именно писать. А незнайка как сидел без кода, так и сидит.

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


Но я вас услышал, впредь постараюсь давать более точные ТЗ.
FishHook
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. Это решение в один проход без дополнительных переменных, то есть самое эффективное. Но исходя из условий задачи его применять нельзя, потому что не известно действительно ли мы получаем на вход отсортированные данные или это у вас пример неудачный. Поэтому никто не хочет вам помогать, ибо как решить задачу, не зная ограничений.

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

А как из списка без сортировки сделать такой?
  l1 = [1, None, 2, 3, 4, None, None]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB