Проверить уникальность элементов списка
В списке чисел проверить, все ли элементы являются уникальными, то есть встречается ли каждое число только один раз.
Решение задачи на языке программирования Python
Решить данную задачу на языке Python можно несколькими способами. Классический вариант — брать по очереди элементы списка и сравнить каждый со стоящими за ним. При первом же совпадении элементов делается вывод, что в списке есть одинаковы элементы и работа программы завершается.
Еще одним способом решения может быть использование типа данных «множества» ( set ). Как известно, в множествах не может быть одинаковых элементов. При преобразовании списка во множество в нем одинаковые элементы будут представлены единожды, то есть дубли удалятся. Если после этого сравнить длину исходного списка и множества, то станет ясно, есть ли в списке одинаковые элементы. Если длины совпадают, значит все элементы списка уникальны. Если нет, значит, были одинаковые элементы.
Допустим, исходный список генерируется таким кодом:
from random import random N = 10 arr = [0] * N for i in range(N): arr[i] = int(random() * 50) print(arr)
Пример решения классическим способом:
for i in range(N-1): for j in range(i+1, N): if arr[i] == arr[j]: print("Есть одинаковые") quit() print("Все элементы уникальны")
Здесь j принимает значения от следующего элемента за тем, для которого ищется совпадение, до последнего в списке. Сравнивать элемент с индексом i с элементами, стоящими впереди него, не надо, т. к. эти сравнения уже выполнялись на предыдущих итерациях внешнего цикла.
Решение задачи с помощью множества:
setarr = set(arr) if len(arr) == len(setarr): print("Все элементы уникальны") else: print("Есть одинаковые")
Функция set преобразует список во множество.
Примеры выполнения кода:
[2, 4, 1, 2, 45, 38, 26, 11, 49, 25] Есть одинаковые
[44, 49, 21, 19, 23, 27, 34, 9, 41, 31] Все элементы уникальны
В Python у списков есть метод count , который подсчитывает количество элементов списка, чьи значения совпадают с переданным в метод значением. Таким образом мы можем решить задачу, перебирая элементы списка и передавая каждый в метод count(item) . Если хотя бы однажны метод вернет число больше 1, значит в списке имеются повторы значений.
from random import randrange N = 10 arr = [randrange(50) for i in range(N)] print(*arr) for item in arr: if arr.count(item) > 1: print("Есть одинаковые") break else: print("Все элементы уникальны")
В программе выше ветка else цикла for срабатывает только в случае, если работа цикла не была прервана с помощью оператора break .
В более сложном варианте данной задачи может требоваться определить неуникальные элементы, то есть выявить значения, которые встречаются в списке более одного раза, а не просто сказать, есть повторы или нет. Здесь мы не можем использовать прерывание цикла, так как в списке может повторяться и другое значение. Также не можем для всех элементов списка вызывать count() , так как в этом случае метод будет вызываться повторно для уже учтенных ранее значений. Например, результат работы такой программы
from random import randrange N = 10 arr = [randrange(50) for i in range(N)] print(*arr) for item in arr: count = arr.count(item) if count > 1: print(f"Элемент встречается раз")
может выглядеть так:
9 36 43 21 48 6 19 13 3 48 Элемент 48 встречается 2 раз Элемент 48 встречается 2 раз
Чтобы исключить из перебора повторы значений, мы можем преобразовать список во множество. После этого перебирать в цикле элементы множества, которые уникальны.
from random import randrange N = 10 arr = [randrange(50) for i in range(N)] print(*arr) setarr = set(arr) for item in setarr: count = arr.count(item) if count > 1: print(f"Элемент встречается раз")
X Скрыть Наверх
Решение задач на Python
Строка: Найти все повторяющиеся символы и заменить их
День добрый! Подскажите, пожалуйста, как найти ВСЕ ПОВТОРЯЮЩИЕСЯ символы в строке и заменить их на то, что я хочу? На данный момент программа находит только один такой символ (либо же только вставляет один в p), либо ищет количество этих повторяющихся символов через str.count(), что бесполезно, потому что нужны индексы, а она их не возвращает..
1 2 3 4 5 6 7 8 9
for i in range(rand): print('Попыток: ', rand-i) inp = input('Введи букву, которая может быть в слове: ') if inp in l: index = l.find(inp) p[index] = inp print(p) else: print('Такой буквы в слове нет!')
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Строка: Найти самое короткое слово в файле и заменить все его символы на $
Уже пару часов пытаюсь написать код, совсем не понимаю как можно это выполнить. Есть файл.
Заменить все повторяющиеся символы на другой символ
Строка "ASDASdsadawqqwr+==we//sadwq==" Нужно заменить все ‘=’ на ‘/’
Заменить все повторяющиеся символы в строке пробелами
заменить все повторяющиеся символы в строке пробелами си

Дана строка. Вывести все не повторяющиеся символы на четных позициях
Дана строка. Вывести все не повторяющиеся символы которые находятся на четных позициях

В строке исключить все повторяющиеся символы, а цифры заменить нулями.
В строке исключить все повторяющиеся символы, а цифры заменить нулями.
![]()
![]()
35346 / 19946 / 4179
Регистрация: 12.02.2012
Сообщений: 33,093
Записей в блоге: 13
Вот дана строка «Hello world». Что должно получиться?
301 / 213 / 104
Регистрация: 02.08.2022
Сообщений: 344
YanchEz, Если вам надо отследить все одинаковые символы из некой строки и их удалить к примеру(или заменить), то как-то так:
строка — азбука, символ — а, вывод — збук
1 2 3 4
s = input() for i in range(s.count('а')): s = s.replace('а', '') print(s)
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
Liakim2006, очень плохо.
1. replace и так меняе все, что находит. Т.о. цикл не имеет смысла.
2. для начала нужно, как минимум, определить — что именно «а» появляется в слове более одного раза
Добавлено через 2 минуты
Если развить эту мысль, то
1 2 3 4 5
s = 'azbuka' for i in set(s): if s.count(i) > 1: s = s.replace(i, '*') print(s) # *zbuk*
Регистрация: 21.08.2022
Сообщений: 4
Дело в том, что str.replace() скорее всего у меня не получится здесь использовать. Удобнее всего было бы применить list.index(), но проблема в том, что метод возвращает всего одно — первое вхождение, а последующие игнорирует. Мне кажется этот момент очень неудобно реализован в питоне, ну либо, что очень вероятно, мне просто не хватает думалки и опыта.
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
Сообщение от YanchEz 
str.replace() скорее всего у меня не получится здесь использовать
Регистрация: 21.08.2022
Сообщений: 4
У меня есть 3 основные переменные — в первую входит случайное слово из списка, во вторую идут случайно выбранные буквы из этого слова, а в третью я кладу (всё слово) минус (случайно выбранные буквы), то есть они исчезают оттуда. Потом идёт input() желаемой буквы, которая может быть в этом слове, и далее идёт проверка на наличие этой буквы в изначальной переменной, где слово написано полностью. И тут пока сама сложность — если input(*символ*) там присутствует, то должна быть выведена (третья переменная)+(input(*символ*)), и всё работает, пока в слове эта буква одна. Если их >= 2, то возвращается это слово только с одной вставленной буквой, а нужно 2 или более.
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
Какая-то лютая дичь
1 2 3 4 5 6 7 8 9 10 11
var1 = 'thisissomeworld' var2 = 'iso' var3 = ''.join(i for i in var1 if i not in var2) var4 = input('Letter: ') #s for example result = var3 + var4 * var1.count(var4) print(var1) print(var2) print(var3) print(var4) print(result)
Регистрация: 21.08.2022
Сообщений: 4
кого интересует ответ на тему — всё легко и просто:
1 2 3 4 5 6 7
if inp in l: for k in range(0, len(l)-2): if inp == l[k]: p[k] = inp print(p) else: continue
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Строка: Заменить все символы, отличные от латинских, цифрой 4
Добрый день! Помогите решить задачу на обработку текстовых данных в VBA. Дан текст – непустая.
Строка: Заменить все латинские строковые символы на заглавные.
Помогите решить задачу. Дана последовательность символов. Заменить все латинские символы на.
Дана строка. Заменить в ней все парные символы на одиночные
Дана строка. Заменить в ней все парные символы на одиночные. Помогите реализовать код. только.
Дана строка произвольного текста. Заменить все символы n на символ m, начиная с позиции k
2.1. Дана строка произвольного текста. Заменить все символы n на символ m, начиная с позиции k.
Найти повторяющиеся элементы в списке Python
В этом посте мы обсудим, как найти повторяющиеся элементы в списке в Python.
1. Использование index() функция
Простое решение состоит в том, чтобы выполнить итерацию по списку с индексами, используя понимание списка, и проверить наличие другого вхождения каждого встреченного элемента, используя index() функция. Временная сложность этого решения будет квадратичной, а код не обрабатывает повторяющиеся элементы в выводе.
Как проверить есть ли в слове повторяющиеся буквы?
Пользователь вводит слово. Программа должна проверить, есть ли в строке одинаковые буквы и посчитать сколько раз они встречаются. Использовать массивы, модули, листы и словари нельзя. Только цикл, только строки.
word = str(input('Введіть слово: ')) count = 0 while count
Пробовала что-то такое, но результат неверный, подсчитывает только кол-во символов.
Отслеживать
51.6k 200 200 золотых знаков 61 61 серебряный знак 242 242 бронзовых знака
задан 8 окт 2020 в 19:02
31 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака
8 окт 2020 в 19:07
вы уверены, что словари использовать нельзя?
8 окт 2020 в 19:10
согласна с вами. программа легко решается с помощью массива, а как решить эту я не знаю. запрет на использование словарей и всего остального - это одно из главных условий
8 окт 2020 в 19:12
множества set() - тоже нельзя использовать?
8 окт 2020 в 19:13
множества нельзя 🙂
8 окт 2020 в 19:14
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Только цикл, только строки:
word = "гиппопотам" seen = "" for c in word: if c not in seen: print(f": ") seen += c
г: 1 и: 1 п: 3 о: 2 т: 1 а: 1 м: 1
Отслеживать
ответ дан 8 окт 2020 в 19:18
MaxU - stand with Ukraine MaxU - stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
большое спасибо, но учитывая, что преподователь довольно требовательный, нужен вариант полегче
8 окт 2020 в 19:27
@anastasia, "Не ищите лёгких путей, ищите правильный!" (c) - автора не помню. 😉
8 окт 2020 в 19:29
Если нельзя ни словарей ни массивов, ни сета, тогда я вижу такой вариант - для первой буквы в слове проверять есть ли у нее повторения, если есть, то вывести сколько их, затем удалить все вхождения этой буквы и продолжать до тех пор пока строка не будет пустой.
word = "гиппопотам" while word: if word.count(word[0])>1: # если вывод количества нужен для всех, а не только для повторяющихся, то этот if можно убрать print(word[0], ':', word.count(word[0])) word = word.replace(word[0], '')
Отслеживать
ответ дан 8 окт 2020 в 19:22
Andrey Maslov Andrey Maslov
2,968 1 1 золотой знак 6 6 серебряных знаков 11 11 бронзовых знаков
говорю, напишите код пожалуйста)
8 окт 2020 в 19:26
добавил код в ответ
8 окт 2020 в 19:30
спасибо большое)
8 окт 2020 в 19:35
немного подправил код, упростил вывод
8 окт 2020 в 19:42
word = input('Введіть слово: ') for i in range(len(word)): if word[i] not in word[:i]: print(word[i], word.count(word[i]))
Вот второй вариант:
word = input('Введіть слово: ') for i in range(len(word)): if i == word.find(word[i]): print(word[i], word.count(word[i]))
