С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Whost
29 / 29 / 23
Регистрация: 13.02.2016
Сообщений: 131
1

Удалить каждое значение списка один раз

15.02.2016, 22:06. Просмотров 894. Ответов 4
Метки нет (Все метки)

Нужно удалить каждое значение списка если оно встречается только один раз. Например есть список
aa aa ab bb bc bc ba aa
На выходе должно пучиться
aa bc aa
Пробовал по одному ремувить значения через for, но может есть способ эффективнее?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2016, 22:06
Ответы с готовыми решениями:

Использование элементов списка или кортежа ровно один раз
Вопрос, как сделать так, чтобы все элементы списка или кортежа использовались...

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

Определить, сколько раз в текстовом файле встречается каждое слово
Ребят, помогите, пожалуйста. Необходимо считать текст с текстового файла и...

Дана монотонная последовательность, в которой каждое натуральное число k встречается ровно k раз
Дана монотонная последовательность, в которой каждое натуральное число k...

Получить один элемент из списка словарей
Подскажите пожалуйста, как реализовать: Есть json ответ вида Хочется иметь...

4
Jabbson
Эксперт по компьютерным сетям
3353 / 2427 / 747
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
15.02.2016, 22:18 2
почему в финальном результате аа два раза, а не три, а bc - один, а не два?
0
Whost
29 / 29 / 23
Регистрация: 13.02.2016
Сообщений: 131
15.02.2016, 22:37  [ТС] 3
Цитата Сообщение от Jabbson Посмотреть сообщение
почему в финальном результате аа два раза, а не три, а bc - один, а не два?
Это не принципиально, главное чтобы в итоге в списке не было тех значений, которые в списке встречаются один раз.
А вообще просто через remove у меня такой результат получился.Я не проводил проверку, а просто все удалял. Мне кажется так быстрее

Добавлено через 10 минут
Короче на выходе должен получиться список в котором не будет тех значений, которые в начальном встречались один раз. И нужно чтоб он получился максимально быстро
0
Marinero
Модератор
Эксперт NIX
2143 / 1723 / 592
Регистрация: 02.03.2015
Сообщений: 5,637
16.02.2016, 01:42 4
Лучший ответ Сообщение было отмечено Whost как решение

Решение

Не знаю как насчет «максимально быстро»
Python
1
2
txt = 'aa aa ab bb bc bc ba aa'.split()
print(*(x for x in txt if txt.count(x) > 1))
Python
2
print(*filter(lambda x: txt.count(x) > 1, txt))
Добавлено через 8 минут
Но самый быстрый(два прохода всего) наверное
Python
2
3
4
5
d = {} 
for x in txt:
    d[x] = d.get(x, 0) + 1
print(*(x for x in txt if d[x] > 1))
1
Whost
29 / 29 / 23
Регистрация: 13.02.2016
Сообщений: 131
16.02.2016, 16:02  [ТС] 5
Цитата Сообщение от Marinero Посмотреть сообщение
Но самый быстрый(два прохода всего) наверное
Python
1
2
3
4
d = {} 
for x in txt:
 d[x] = d.get(x, 0) + 1
print(*(x for x in txt if d[x] > 1))
Большое спасибо, способ оказался на порядок быстрее моего
0
16.02.2016, 16:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2016, 16:02

Распечатайте только те значения элементов массива, которые встречаются в нем ровно один раз
Помогите пожалуйста решить задачу: На вход программе сначала подается...

Удалить элемент списка
Задание: Дан список из чисел и индекс элемента в списке k. Удалите из списка...

Как удалить элементы из списка?
У меня есть список который выглядить так var = как мне получить вот...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru