Найти одинаковые элементы в списке и возвратить их индекс
Как найти одинаковые элементы в списке List
Нужно найти все не уникальные числа последовательности, метод Distinct не приемлем так как нужно.
Как проверить есть ли одинаковые элементы в списке List и если есть одинаковые то из всех оставить только один
Как проверить есть ли одинаковые элементы в списке List и если есть одинаковые то из всех оставить.
Найти в строке слово минимальной длины и возвратить индекс его начала
Информатика 1 курс, прошу помочь с написанием программы: Найти в строке слово минимальной длины.
Строка: Найти в строке самую внутреннюю пару скобок и возвратить индекс открывающейся.
Найти в строке самую внутреннюю пару скобок и возвратить индекс открывающейся, например.
Найти слово, начинающееся с самой младшей латинской буквы и возвратить индекс его начала
Дана строка, содержащая некоторый текст (включая пробелы и знаки препинания). Под словом понимается.
![]()
![]()
35521 / 19996 / 4186
Регистрация: 12.02.2012
Сообщений: 33,174
Записей в блоге: 13

Сообщение было отмечено Nikmoz как решение
Решение
1 2 3 4 5 6 7 8 9 10
def ind_eq(arr): n=len(arr) res=[] for i in range(n-1): for j in range(i+1,n): if arr[i]==arr[j]: res.append((i,j)) return res print(ind_eq(['qqqq', 'wwww', 'qqqq']))
4464 / 3216 / 1126
Регистрация: 21.03.2016
Сообщений: 7,956
1 2 3
def ind_eq(arr): return [i for i,x in enumerate(arr) if x in filter(lambda x : arr.count(x) > 1, set(arr))] print(*ind_eq(['qqqq', 'wwww', 'qqqq'])))
Получение значения элемента по его индексу
Результатом будет значение i -го элемента последовательности sequence . Эту операцию еще называют «взятие элемента индексу».
- Индексирование последовательностей всегда начинается с 0 нуля, это означает, что бы получить значение первого элемента последовательности, например списка, нужно выполнить операцию sequence[0] .
- Если индекс i отрицателен, то индекс считается относительно конца последовательности sequence . В этом случае положительный индекс можно посчитать по формуле len(sequence) — i .
- Обратите внимание, что -0 по-прежнему будет 0 .
При попытке получить значение элемента с индексом, превышающим длину последовательности поднимается исключение IndexError .
Эта операция поддерживаются большинством типов последовательностей, как изменяемых, так и неизменяемых.
Примечание: Множества set не поддерживает индексирование элементов, т.к. это неупорядоченная коллекция без повторяющихся элементов. Но если все же необходимо получить значение элемента по индексу, то множество set необходимо преобразовать в список list или кортеж tuple . Например:
>>> mySet = set([1, 2, 3]) >>> list(mySet)[1] # 2
Примеры получения значения элемента по индексу.
>>> x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> x[0] # 1 >>> x[4] # 5 >>> x[-1] # 10 >>> x[-4] # 7 # Проверка формулы len(sequence) - i >>> y = len(x) - 4 >>> x[y] # 7 # Индекс превышает длину последовательности >>> x[15] # Traceback (most recent call last): # File "", line 1, in # IndexError: list index out of range
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Проверка существования значения в последовательности Python
- Конкатенация (сложение) последовательностей
- Увеличение последовательности в N раз
- Получение значения элемента по индексу sequence[i]
- Получение среза sequence[i:j]
- Получение среза с заданным шагом sequence[i:j:k]
- Вычисление длины последовательности
- Наименьшее значение последовательности Python
- Наибольшее значение в последовательности Python
- Метод последовательности index()
- Метод последовательности count()
Python-сообщество
![]()
- Начало
- » Python для новичков
- » Индексы одинаковых элементов списка
#1 Апрель 1, 2015 18:35:48
OWGrant Зарегистрирован: 2015-04-01 Сообщения: 2 Репутация: 0 Профиль Отправить e-mail
Индексы одинаковых элементов списка
Здравствуйте!
Моя проблема в следующем. Имеется список, некоторые элементы в котором повторяются, но стоят не подряд друг за другом. Необходимо индексы этих элементов поместить в другой список. Однако код
test = ['a' , 'b' , 'c' , 'a' , 'd' , 'e' , 'a' , 'f' , 'g' , 'a' , 'h' , 'i' ] a_items = [] for i in test: if i == 'a': a_items.append(test.index(i)) print a_items
…каждому из повторяющихся элементов присваивает индекс самого первого из этих элементов.
Прошу помочь новичку. Заранее спасибо!
Проверить уникальность элементов списка
В списке чисел проверить, все ли элементы являются уникальными, то есть встречается ли каждое число только один раз.
Решение задачи на языке программирования 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