1

Не работает очистка списка от повторяющихся элементов. Не выводит ничего(

some_list = [12, 56, 91, 12, 15, 56, 12]
set(some_list)
MaxU - stand with Ukraine
  • 149,321
  • 12
  • 59
  • 132

2 Answers2

2

Когда вам не нужно сохранить порядок, вы можете сделать так:

some_list = [12, 56, 91, 12, 15, 56, 12]
some_list = list(set(some_list))        # использовать set(), затем назад к списку - list()

print(some_list)

Вывод:

[56, 91, 12, 15]

Но когда вы хотите сохранить порядок, можете сделать так:

new_list = []

for el in some_list:
    if el not in new_list:
        new_list.append(el)

print(new_list)

Вывод:

[12, 56, 91, 15]
MarianD
  • 17,120
  • можно упомянуть, что вариант с set не сохраняет исходный порядок элементов и работает только для хэшируемых элементов. Вариант с вложенным циклом является квадратичным по времени. Ввод не ограничен в вопросе, поэтому это гораздо хуже линейного варианта с set(). По ссылкам под вопросом можно найти решения, которые сохраняют порядок и/или не являются квадратичными. – jfs Jul 10 '18 at 02:28
1

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

def without_repetition(input_list):
    return list(set(input_list))

print(without_repetition([12, 56, 91, 12, 15, 56, 12]))  #[56, 91, 12, 15]
  • 5
    В питоне не используется верблюжья нотация, поэтому: withoutRepetition -> without_repetition, inputList -> input_list – gil9red Jul 09 '18 at 11:58
  • Дурная привычка из-за работы с PyQt, где "верблюд" используется – my diamonds dancing Jul 09 '18 at 12:03
  • Все же было гораздо проще в учебнике, но по-прежнему не работает some_list = ['a', 'b', 'd', 'f', 'g', 'b', 'f', 's'] print = (some_list) print = (set(some_list)) – Gurin Artem Jul 09 '18 at 12:40
  • print( withoutRepetition(['a', 'b', 'd', 'f', 'g', 'b', 'f', 's']) ) #['f', 'g', 'b', 's', 'a', 'd'] – my diamonds dancing Jul 09 '18 at 12:43
  • К сожалению выдает ошибку – Gurin Artem Jul 09 '18 at 12:52
  • some_list = ['a', 'b', 'd', 'f', 'g', 'b', 'f', 's'] print( withoutrepetition (['a', 'b', 'd', 'f', 'g', 'b', 'f', 's']) ) – Gurin Artem Jul 09 '18 at 12:53
  • some_list = ['a', 'b', 'd', 'f', 'g', 'b', 'f', 's']; print( withoutRepetition(some_list) ) – my diamonds dancing Jul 09 '18 at 12:54
  • Сработало вот так: some_list = ['a', 'b', 'd', 'f', 'g', 'b', 'f', 's'] print( set(['a', 'b', 'd', 'f', 'g', 'b', 'f', 's']) ) – Gurin Artem Jul 09 '18 at 13:02
  • Я использовать 'list(set(input_list))' для того, чтобы функция возвращала тип list, который более гибкий в работе. Проверьте правильность написание имени функции, в частности регистр – my diamonds dancing Jul 09 '18 at 13:03
  • Большое спасибо – Gurin Artem Jul 09 '18 at 13:29
  • @mydiamondsdancing, привычка привычкой, а исправляться никогда не поздно ) – gil9red Jul 09 '18 at 13:51
  • @gil9red не спорю, со временем перейду на такой стиль(точно не знаю, как он называется) – my diamonds dancing Jul 09 '18 at 13:58
  • 3
    Для себя вы можете писать в любом стиле и вообще, если в текущем проекте используется свой стиль, руководство говорит, что не нужно весь код рефакторить, однако выкладывая публично код, нужно придерживаться общего стиля. Я вам уже 2 раза намекал на это :D Вас не будут карать за то, что не следуете общему стилю, но могут отнестись к такому коду хуже. Вы можете найти русскоязычное описание руководства или оригинальное: https://www.python.org/dev/peps/pep-0008/#function-and-variable-names – gil9red Jul 09 '18 at 14:11
  • @mydiamondsdancing, почему не принять совет gil9red и не изменить withoutRepetition на without_repetition и inputList на input_list прямо в вашем ответе? – MarianD Jul 09 '18 at 15:15
  • @MarianD уже исправился, извиняюсь за задержку – my diamonds dancing Jul 09 '18 at 15:57
  • как зделать так щтобы можна было не вводить числа в ручную а щтобы они переносились со списка – Руслан Власенко Mar 21 '20 at 16:24
  • @РусланВласенко Я конечно извиняюсь, но для начала выучить основы русского языка. Такая грамматика это уже слишком – my diamonds dancing Mar 21 '20 at 18:30