Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 4, 2022 16:14:04

AlLinik
Зарегистрирован: 2022-05-17
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

Всем привет!
Помогите, пожалуйста!

Условие задачи: "Есть список , отсортируй его и оставь только уникальные элементы (оставить нужно только те элементы, которые встречаются в списке только раз )".
КАК ИСПРАВИТЬ КОД???

 a = [100, 75, 100, 20, 75, 12, 75, 25]
b = []
for i in a:
    if i not in b:
        b.append(i)
print(b)

Всем откликнувшимся - ЗАРАНЕЕ СПАСИБО!

Отредактировано AlLinik (Июнь 6, 2022 01:46:15)

Офлайн

#2 Июнь 4, 2022 16:30:43

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

  
a = [100, 75, 100, 20, 75, 12, 75, 25]
b = list(sorted(set(a)))
print(b)

Если задача была не на результат, а так, с циклами повозиться, то вот:

  
a = [100, 75, 100, 20, 75, 12, 75, 25]
b = []
for i in a:
    if i not in b:
        b.append(i)
 
for i in range(len(b)):
    for j in range(len(b) - i - 1):
        if b[j] > b[j + 1]:
            b[j], b[j + 1] = b[j + 1], b[j]
print(b)

Отредактировано Palrom (Июнь 4, 2022 16:48:51)

Офлайн

#3 Июнь 4, 2022 16:33:23

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

 a =[100, 75, 100, 20, 75, 12, 75, 25]
b = set(a)
print(b)
кхм кхм вижу что уже …



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 4, 2022 16:34:19)

Офлайн

#4 Июнь 6, 2022 01:53:13

AlLinik
Зарегистрирован: 2022-05-17
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

Спасибо, конечно!!!
НО ВСЕ ВАШИ ОТВЕТЫ НЕПРАВИЛЬНЫЕ!!!
Необходимо вывести те, которые только раз встречаются - ЭТО 20, 12, 25.
100 (встречается 2 раза в списке) и 75 (встречается 3 раза в списке) - выводить не нужно

Отредактировано AlLinik (Июнь 6, 2022 01:54:28)

Офлайн

#5 Июнь 6, 2022 09:57:32

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

AlLinik
НО ВСЕ ВАШИ ОТВЕТЫ НЕПРАВИЛЬНЫЕ!!!
Какая постановка задачи, тАКИЕ И ОТВЕТЫ!!1
AlLinik
Необходимо вывести те, которые только раз встречаются - ЭТО 20, 12, 25.
Вот это в заглавный пост и надо было добавить.

  
a = [100, 75, 100, 20, 75, 12, 75, 25]
b = [i for i in set(a) if a.count(i) == 1]
print(b)

Отредактировано Palrom (Июнь 6, 2022 10:04:50)

Офлайн

#6 Июнь 6, 2022 10:18:55

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

Уникальные элементы!!!

  
>>> lst = [100, 75, 100, 20, 75, 12, 75, 25]
>>> 
>>> dct = {}
>>> for i in lst:
...     if i in dct:
...         dct[i] = 2
...     else:
...         dct[i] = 1
... 
>>> out = [i for i in dct if dct[i] == 1]
>>> out
[20, 12, 25]
>>>



Офлайн

#7 Июнь 7, 2022 00:26:36

AlLinik
Зарегистрирован: 2022-05-17
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

СПС

Офлайн

#8 Июнь 7, 2022 23:29:35

AlLinik
Зарегистрирован: 2022-05-17
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

Вот хороший вариант решения:D

Palrom выше написал код, только одной строкой.

Этот код новичкам будет больше понятен (я бы хотел такой ответ):

 print('''Введите цифры или буквы через пробел в строку.
Программа выведет символы, которые встречаются в строке только раз!''')
a = input('\nВаша строка: ', ).split()
b = []
for i in a:
    if a.count(i) == 1:
        b.append(i)
print(b)

Отредактировано AlLinik (Июнь 7, 2022 23:33:00)

Офлайн

#9 Июнь 7, 2022 23:57:05

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

Уникальные элементы!!!

AlLinik
Вот хороший вариант решения

Palrom выше написал код, только одной строкой.
Он так выглядит, но это ловушка для новичков. Palrom не знает про временную сложность, поэтому и не понимает, что его код для миллиона элементов будет иметь всё ту же сложность O(n^2) - квадратную сложность - и этот код в худшем случае будет делать миллион миллионов операций, потому что list.count() всегда будет ходить от начала списка до конца списка. Я же написал код с временной сложностью O(n) - линейной сложностью - и в худшем случае этот код для миллиона элементов будет делать всего два миллиона операций, потому что максимально пройдёт только два раза по списку.

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



Отредактировано py.user.next (Июнь 7, 2022 23:58:14)

Офлайн

#10 Июнь 9, 2022 00:43:24

AlLinik
Зарегистрирован: 2022-05-17
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Уникальные элементы!!!

py.user.next

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version