Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 26.01.2022
Сообщений: 9

Получить новый массив без дублей

01.02.2022, 22:26. Показов 1644. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток
Изучаю Питон и такое задание появилось. Не до конца правильную логику делаю

Суть такая:
Юзер вводит в инпут рандомной количество и порядок букв или цифр
Потом создаю второй список и в нем принтую все без дублей, но суть в том, если это буква/цифра появится через несколько символов снова, то ее нужно снова принтануть в массиве по порядку.

Как пример: QQQQqqqWWWwwwwOPTYQQQWWW
Должен получить: ['Q', 'q', 'W', 'w', 'O', 'P', 'Y', 'Q', 'W']
В принте могут быть разные символы, это как пример пришедший в голову

У меня вот такой код, но он вообще все дубли убирает и по одному выводит. Как правильней будет, чтобы как по условию? (Желательно в простом формате кода, как для начинающих)

Python
1
2
3
4
5
6
7
8
9
10
odin = list(input())
dwa = []
 
for i in odin:
    if i not in dwa:
        dwa.append(i)
        print(dwa)
 
print()
print(dwa)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2022, 22:26
Ответы с готовыми решениями:

Получить список без дублей по двум значениям
Есть сущности с такими значениями "360p 285,19 Kbit/s" "720p 421,89 Kbit/s" "1440p 6,22 Mbit/s" "1080p 4,89 Mbit/s" ...

Получить новый массив из данного без нулевых элементов
Дан массив целых чисел. Получить новый массив из данного без нулевых элементов.

Получить новый массив из данного без нулевых элементов
Прошу помощи. Дан массив целых чисел. Получить новый массив из данного без нулевых элементов. Тем кто поможет заранее огромное спасибо!

15
Заблокирован
01.02.2022, 22:40
Python
1
2
3
4
5
6
7
8
9
10
11
odin = list(input())
dwa = []
prev='' 
for i in odin:
    if i not in dwa or i!=prev:
        dwa.append(i)
        print(dwa)
    prev=i
 
print()
print(dwa)
0
0 / 0 / 0
Регистрация: 26.01.2022
Сообщений: 9
01.02.2022, 22:45  [ТС]
Цитата Сообщение от Old30School Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
odin = list(input())
dwa = []
prev='' 
for i in odin:
    if i not in dwa or i!=prev:
        dwa.append(i)
        print(dwa)
    prev=i
 
print()
print(dwa)
Спасибо Вам за ответ. Все отработало правильно
Но мы еще не проходили написанный Вами синтаксис и сложно будет объяснить откуда взял такую конструкцию и как ее правильно использовать, а именно:

Python
1
2
3
prev='' 
i!=prev
prev=i
Если бы без вот этого всего получилось)
0
Заблокирован
01.02.2022, 22:51
Python
1
2
3
prev=''#предыдущий символ, пока пустой 
or i!=prev#или текущий символ не равен предыдущему
prev=i#текущий символ будет предыдущим в следующей итерации for
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
01.02.2022, 22:58
Python
1
2
3
4
5
6
s = 'QQQQqqqWWWwwwwOPTYQQQWWW'
res = ''
for lit in s:
    if not res or res[-1] != lit:
        res += lit
print(res)
0
0 / 0 / 0
Регистрация: 26.01.2022
Сообщений: 9
01.02.2022, 23:03  [ТС]
Цитата Сообщение от idealist Посмотреть сообщение
Python
1
2
3
4
5
6
s = 'QQQQqqqWWWwwwwOPTYQQQWWW'
res = ''
for lit in s:
    if not res or res[-1] != lit:
        res += lit
print(res)
Спасибо Вам за помощь)
Все работает, все супер, но не совсем то, ибо синтаксис не совсем подходящий
Нужно все без "!= lit" и i!=prev
Такой формат не примут, к огромному сожалению
Нужно +/- в таком формате как изначально или похожий
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
01.02.2022, 23:05
Ну или так:

Python
1
2
s = 'QQQQqqqWWWwwwwOPTYQQQWWW'
print( ''.join( s[i] for i in range( len(s) - 1 ) if s[i] != s[i+1] ) )
0
Заблокирован
01.02.2022, 23:13
да join все упростит для ТС
0
0 / 0 / 0
Регистрация: 26.01.2022
Сообщений: 9
01.02.2022, 23:24  [ТС]
К сожалению, с таким синтаксисом ничего не понятно)) и не засчитают
Совсем выглядит сложно со знаками восклицания)
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
01.02.2022, 23:26
Python
1
2
3
import re
s = 'QQQQqqqWWWwwwwOPTYQQQWWW'
print(re.sub(r'(.)(\1)+',r'\1',s))
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
01.02.2022, 23:33
u235, дубль в группу не надо, лишняя работа движку
Python
1
print(re.sub(r'(.)\1+', r'\1', s))
Добавлено через 1 минуту
Варик )))
Python
1
print(re.sub(r'(?<=(.))\1+', '', s))
1
Заблокирован
01.02.2022, 23:35
Цитата Сообщение от Tolya-Anatoliy Посмотреть сообщение
Совсем выглядит сложно со знаками восклицания)
Python
1
if i not in dwa or not(i==prev):
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
02.02.2022, 00:28
Tolya-Anatoliy, если множества проходили:
Python
1
2
3
4
5
6
7
8
st = 'QQQQqqqWWWwwwwOPTYQQQWWW'
symb = set(st)
res = ''
for s in st:
    if s in symb:
        res = res + s 
        symb = symb - {s}
print(res)

Не по теме:

А так - странно не знать '!='

0
0 / 0 / 0
Регистрация: 26.01.2022
Сообщений: 9
02.02.2022, 00:35  [ТС]
Цитата Сообщение от Gdez Посмотреть сообщение
Tolya-Anatoliy, если множества проходили:
Python
1
2
3
4
5
6
7
8
st = 'QQQQqqqWWWwwwwOPTYQQQWWW'
symb = set(st)
res = ''
for s in st:
    if s in symb:
        res = res + s 
        symb = symb - {s}
print(res)

Не по теме:

А так - странно не знать '!='

Согласен с Вами, но вот только планируем на след занятиях проходить "!=". Пока без них практикуем

Спасибо Вам за Ваш вариант, но он получается работает по такой самой схеме как мой. Код не видит значения которые потом повторяются и просто принтует их один раз. И потом выходит не в массиве в формате ['Q', 'q', 'W', 'w', 'O', 'P', 'Y', 'Q', 'W']
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
02.02.2022, 00:51
Python
1
2
3
s = input()
result = list(dict.fromkeys(s).keys())
print(result)
Добавлено через 3 минуты
Если нужно убрать повторы в подпоследовательностях:
Python
1
2
3
4
5
6
from itertools import groupby
 
 
s = input()
result = [key for key, _ in groupby(s)]
print(result)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
02.02.2022, 02:32
Цитата Сообщение от Tolya-Anatoliy Посмотреть сообщение
Получить новый массив без дублей
Неверная постановка задача. Массив без дублей получается классическим алгоритмом, который принимает на вход предварительно отсортированный список и перемещает уникальные элементы в начало массива, возвращая границу между уникальными элементами и прочими.

Цитата Сообщение от Tolya-Anatoliy Посмотреть сообщение
Должен получить: ['Q', 'q', 'W', 'w', 'O', 'P', 'Y', 'Q', 'W']
А где буква T?
Если ее не нужно выводить, значит в условии должно быть указано - игнорировать символы не имеющие повторов.

-----------------------------------------------
Если не хочешь использовать оператор не равно можно просто изменить условие добавив оператор продолжения цикла (уж его-то вы должны были проходить).
Python
1
2
3
4
5
6
7
8
9
10
11
12
arr="QQQQqqqWWWwwwwOPTYQQQWWW"
out = []
prev = ""
 
for curr in arr: 
    if prev == curr:
        continue
    out.append(curr)
    prev = curr
        
 
print(out==['Q', 'q', 'W', 'w', 'O', 'P', 'T', 'Y', 'Q', 'W'])
Добавлено через 5 минут
Цитата Сообщение от Tolya-Anatoliy Посмотреть сообщение
В принте могут быть разные символы, это как пример пришедший в голову
Вангую, что прочие примеры на представленных кодах будут выдавать совсем не то что ожидалось. А все потому что нет правильно сформулированной задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2022, 02:32
Помогаю со студенческими работами здесь

Получить новый массив из данного без элементов, расположенных между максимальным и минимальным
Дан массив действительных чисел. Получить новый массив из данного без элементов, расположенных между максимальным и минимальным элементом...

Поиск дублей в строках из 10 столбцов, суммирование дублей по полю и удаление дублей
Добрый день! Ребята, очень нужна помощь! Необходимо в MS Excel выявить дубли по строкам, состоящим из 10 столбцов. Дубли удалить, но...

Массив: Получить новый массив P, состоящую из чисел в интервале (a,b), которые не входят в массив H...
Помогите с заданием, пожалуйста :Написать программу, которая формирует новую последовательность P, состоящую из целых чисел из интервала...

Дан массив, состоящий из 15 элементов целого типа. Получить новый массив, как разность между элементами исходного массив
Дан массив, состоящий из 15 элементов целого типа. Получить новый массив, как разность между элементами исходного массива и его среднего...

Дан случайный массив. Сформировать новый массив на основе данного, но без дубликатов
вот код package com.company; import java.lang.String; import java.util.Random; class Main { public static void main(String...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru