Форум сайта python.su
0
Всем привет!
Помогите, пожалуйста!
Условие задачи: "Есть список , отсортируй его и оставь только уникальные элементы (оставить нужно только те элементы, которые встречаются в списке только раз )".
КАК ИСПРАВИТЬ КОД???
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)
Офлайн
5
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)
Офлайн
44
a =[100, 75, 100, 20, 75, 12, 75, 25] b = set(a) print(b)
и вставьте ссылку на его url Отредактировано AD0DE412 (Июнь 4, 2022 16:34:19)
Офлайн
0
Спасибо, конечно!!!
НО ВСЕ ВАШИ ОТВЕТЫ НЕПРАВИЛЬНЫЕ!!!
Необходимо вывести те, которые только раз встречаются - ЭТО 20, 12, 25.
100 (встречается 2 раза в списке) и 75 (встречается 3 раза в списке) - выводить не нужно
Отредактировано AlLinik (Июнь 6, 2022 01:54:28)
Офлайн
5
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)
Офлайн
857
>>> 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] >>>
Офлайн
0
СПС
Офлайн
0
Вот хороший вариант решения: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)
Офлайн
857
AlLinikОн так выглядит, но это ловушка для новичков. Palrom не знает про временную сложность, поэтому и не понимает, что его код для миллиона элементов будет иметь всё ту же сложность O(n^2) - квадратную сложность - и этот код в худшем случае будет делать миллион миллионов операций, потому что list.count() всегда будет ходить от начала списка до конца списка. Я же написал код с временной сложностью O(n) - линейной сложностью - и в худшем случае этот код для миллиона элементов будет делать всего два миллиона операций, потому что максимально пройдёт только два раза по списку.
Вот хороший вариант решения
Palrom выше написал код, только одной строкой.
Отредактировано py.user.next (Июнь 7, 2022 23:58:14)
Офлайн
0
py.user.next
Офлайн