Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/67: Рейтинг темы: голосов - 67, средняя оценка - 4.96
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362

Убрать из массива одинаковые элементы

01.05.2017, 08:29. Показов 13384. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
a2 = []
for idx, i in enumerate(a1[1:]): #a1 - входной массив
    if(i != a1[idx - 1]):
        a2.append(i)
В результате a2 ничем не отличается от a1. Подскажите, что не так и/или подскажите штучку, которая сделает это правильно
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2017, 08:29
Ответы с готовыми решениями:

Убрать одинаковые элементы
Добрый день, такой вопрос. Имеется список кортежей Можно ли как-то убрать все элементы, где есть 0, не используя рекурсивных функций

C# List<T> как убрать одинаковые элементы
Естьpublic static List&lt;string&gt; sFileName = new List&lt;string&gt;(); , заполненный из базы данных. Как убрать из него одинаковые повторяющиеся...

Убрать одинаковые числа из массива
LABEL m22; LABEL m221; LABEL m; var mark:integer; var a,b,c,i,n:byte; yesno: char; snov:byte; res_t:array of string; ...

9
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
01.05.2017, 09:28
Лучший ответ Сообщение было отмечено kolay_ne как решение

Решение

Если не важен порядок следования элементов, то можно так
Python
1
2
data = [1, 1, 4, 6, 4, 3, 7, 13, 1]
print(set(data))
А если важен, то вот так
Python
1
2
3
4
5
6
7
8
9
from collections import OrderedDict
 
data = [1, 1, 4, 6, 4, 3, 7, 13, 1]
filtered = OrderedDict()
 
for i in data:
    filtered[i] = ''
 
print(filtered.keys())
1
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
01.05.2017, 13:25  [ТС]
Цитата Сообщение от alex925 Посмотреть сообщение
set(data)
Спасибо, этого оказалось достаточно. А функция set возвращает лист или в питоне прямо тип такой есть - set?
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
01.05.2017, 14:38
Цитата Сообщение от kolay_ne Посмотреть сообщение
А функция set возвращает лист или в питоне прямо тип такой есть - set?
Это встроенный тип
4.9. Set Types — set, frozenset
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
01.05.2017, 15:46
kolay_ne, set это множество и возвращается множество. Если нужен список то конвертируй его в список.
0
0 / 0 / 0
Регистрация: 13.03.2021
Сообщений: 35
01.05.2021, 15:20
Добрый день.

Новую тему не стал создавать.

Как убрать повторы, используя перевод списка в множество и наоборот - понятно.
А как убрать повторы в принципе?
Поясню вопрос.

Пусть есть список: ['ананас', 'аэроплан', 'аэроплан', 'буклет', 'лошадка', 'пони', 'слон', 'слон'].
Специально привожу в отсортированном виде.
Перевод в set оставит 'аэроплан' и 'слон'.

А на выходе должен быть список, где слово повторившееся дважды и более, будет отсутствовать.
Если говорить о списке выше, то на выходе должно быть: ['ананас', 'буклет', 'лошадка', 'пони'].

Очевидно нужно список сначала отсортировать, потом смотреть, если соседние элементы равны, то все их удалять.
Вроде просто, но не получается.

Python
1
2
3
4
5
6
7
8
9
10
11
12
# сортировку опускаю
source = ['ананас', 'аэроплан', 'аэроплан', 'буклет', 'лошадка', 'пони', 'слон', 'слон']
i = 0
res = []
 
while i < len(source) - 1:
    if source[i] == source[i + 1]:
        i += 1
        continue
    else:
        res.append(source[i + 1])
        i += 1
Не то!!!
0
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
01.05.2021, 15:29
Python
1
2
3
4
5
6
7
source = ['ананас', 'аэроплан', 'аэроплан', 'буклет', 'лошадка', 'пони', 'слон', 'слон']
 
result = []
for i in source:
    if i not in result:
        result.append(i)
print(result)
0
0 / 0 / 0
Регистрация: 13.03.2021
Сообщений: 35
01.05.2021, 16:10
Vigi, извините, но этот вариант я уже "крутил".

На выходе будет то же, что и с использованием set(): ['ананас', 'аэроплан', 'буклет', 'лошадка', 'пони', 'слон']
А должно быть: ['ананас', 'буклет', 'лошадка', 'пони'].

Добавлено через 35 минут
Понял. Без словаря не обошлось.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
source = ['ананас', 'аэроплан', 'аэроплан', 'буклет', 'лошадка', 'пони', 'слон', 'слон']
 
d = {}
result = []
 
for item in source:
    if item not in d.keys():
        d[item] = 1
    else:
        d[item] += 1
 
for item in d:
    if d[item] < 2:
        result.append(item)
 
print(result)
Если есть более изящные методы, с интересом изучу. Спасибо.

Не по теме:

С Первомаем!!!

0
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
01.05.2021, 16:46
Voidman,
Python
1
2
source = ['ананас', 'аэроплан', 'аэроплан', 'буклет', 'лошадка', 'пони', 'слон', 'слон']
print([i for i in source if source.count(i) < 2])
так, что ли?
1
0 / 0 / 0
Регистрация: 13.03.2021
Сообщений: 35
01.05.2021, 16:55
Vigi, да. Благодарю. Метод count в голову не пришёл. При таком подходе не то, что словарь, даже предварительная сортировка не требуется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.05.2021, 16:55
Помогаю со студенческими работами здесь

Одинаковые элементы массива
Надо определить сколько в массиве одинаковых элементов, по разному пробывала и никак не получается. #include &lt;iostream&gt; #include...

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

Сгруппировать одинаковые элементы массива
Здравствуйте, подскажите пожалуйста,например,мы вводим массив 1,2,3,4,5,6,5,1 а вывод был 11,2,3,4,55,6. Как это реализовать ?

Найти одинаковые элементы массива
На c#.Надо ввести массив со 100 раундомными элементами, и проверить есть ли в нём одинаковые елементы, если да, то вывести на экран...

Удалить одинаковые элементы массива
Создать массив из 20 элементов, из массива удалить одинаковые элементы массива и вывести на экран


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru