Как находить элементы в массиве в программировании на Swift?
Как найти нужный элемент в массиве на Swift? Давайте разберемся! В этом руководстве вы узнаете, как использовать различные функции для поиска совпадающих элементов в массиве.
Поиск индекса элемента в массиве вручную
Поиск элемента в массиве с помощью firstIndex(of:)
Поиск элемента в массиве с помощью firstIndex(where:)
Поиск всех элементов в массиве с помощью all(where:)
Поиск индекса элемента в массиве вручную
Прежде чем мы углубимся в способы поиска элементов в массиве, давайте выясним, как может работать такой алгоритм. Задача проста: для массива произвольного количества элементов нам нужно найти индекс заданного значения.
Вот обзор нашего подхода:
- Перебрать каждое значение в массиве.
- Отслеживать текущий индекс, который мы проверяем.
- Сравните текущее значение со значением, которое мы ищем.
- Если появляется совпадение, вернуть текущий индекс, если нет, продолжить перебор массива.
let names = ["Ford", "Arthur", "Trillian", "Zaphod", "Marvin", "Deep Thought", "Eddie", "Slartibartfast", "Humma Kuvula"] let searchValue = "Zaphod" var currentIndex = 0 for name in names { if name == searchValue { print("Имя \(name) для индекса \(currentIndex)") break } currentIndex += 1 } // Имя Zaphod для индекса 3
Мы используем цикл for для перебора каждого элемента в массиве names.
- С помощью оператора if мы проверяем, совпадает ли name с searchValue.
- Если мы находим совпадение, мы выводим строку на консоль и останавливаем выполнение цикла с помощью break. Если мы этого не сделаем, цикл продолжится, даже если мы уже нашли то, что ищем.
- В конце цикла мы увеличиваем значение currentIndex на единицу. Таким образом, мы отслеживаем текущий индекс массива.
Мы можем превратить наш код в функцию:
func find(value searchValue: String, in array: [String]) -> Int? { for (index, value) in array. enumerated() { if value == searchValue { return index } } return nil }
Мы используем функцию enumerated() для получения пары индекс-значение. Таким образом, мы можем напрямую получить конкретный индекс для искомого элемента без необходимости отслеживать его самостоятельно.
Когда функция находит искомое значение, происходит выход из функции. Когда значение не может быть найдено, функция возвращает nil. Таким образом, возвращаемый тип функции — Int?
Мы можем использовать данную функцию следующим образом:
let names = ["Ford", "Arthur", "Trillian", "Zaphod", "Marvin", "Deep Thought", "Eddie", "Slartibartfast", "Humma Kuvula"] let index = find(value: "Eddie", in: names) print(index) // Optional(6)
Поиск элемента в массиве с помощью firstIndex(of:)
Самый простой способ найти элемент в массиве — использовать функцию firstIndex(of:):
if let index = names.firstIndex(of: "Marvin") { print(index) } // 4
Эта функция является универсальной, поэтому ее можно использовать независимо от типа массива.
Также мы можем заменить какое-либо значение в массиве:
if let index = names.firstIndex(of: "Zaphod") { names[index] = "Prostetnic Vogon Jeltz" }
Поскольку функция firstIndex(of:) просматривает все значения массива от первого до последнего, она всегда возвращает индекс первого найденного совпадения. Если вы хотите получить последнее совпадение в массиве, вы можете использовать функцию lastIndex(of:).
Поиск элемента в массиве с помощью firstIndex(where:)
Что делать, если вы точно не знаете, какое конкретное значение ищете? Тут нам поможет функция firstIndex(where:). Эта функция принимает замыкание в качестве параметра для поиска совпадений в массиве.
let grades = [8, 9, 10, 1, 2, 5, 3, 4, 8, 8] if let index = grades.firstIndex(where: { $0 < 7 }) { print("Первый индекс < 7 = \(index)") } // 3
В приведенном выше коде мы работаем с массивом целых чисел grades. Мы хотим знать индекс первого элемента массива, который меньше 7. При этом мы знаем только то, что оно должно быть меньше 7.
Код между фигурными скобками — это замыкание, которое выполняется для каждого элемента массива, пока мы не найдем успешное совпадение, то есть выражение $0 < 7 должно вернуть true.
Мы используем опциональное связывание для извлечения опционального значения из firstIndex(where:).
Данная функция принадлежит к группе функций, которые могут выбирать элементы из массива, соответствующие заданному предикату:
- firstIndex(where:) возвращает индекс первого элемента, соответствующего предикату.
- lastIndex(where:) возвращает индекс последнего элемента, соответствующего предикату.
- contains(where:) возвращает логическое значение, указывающее, содержит ли массив элемент, соответствующий предикату.
- allSatisfy(_:) возвращает логическое значение, указывающее, все ли элементы в массиве соответствуют предикату.
- first(where:)возвращает первый элемент (не индекс) массива, который соответствует предикату.
- last(where:)возвращает последний элемент (не индекс) массива, который соответствует предикату.
Имейте в виду, что если вы хотите использовать вышеуказанные функции, элементы в вашем массиве должны соответствовать протоколу Equatable. Типы, соответствующие этому протоколу, можно сравнить с помощью оператора ==, который используется для проверки равенства двух элементов.
Поиск всех элементов в массиве с помощью all(where:)
Что, если мы хотим найти все элементы в массиве, которые бы соответствовали заданному предикату? В стандартной библиотеке Swift пока нет данной функции, но мы можем создать свою собственную.
extension Array where Element: Equatable { func all(where predicate: (Element) -> Bool) ->; [Element] { return self.compactMap { predicate($0) ? $0 : nil } } }
Объявление функции принимает параметр типа (Element) -> Bool и возвращает массив типа [Element]. Далее мы используем функцию compactMap (_ :). Эта функция применяет замыкание для каждого элемента в массиве, а также удаляет значения nil.
Выражение predicate($0) ? $0 : nil вернет значение $0, когда предикат возвращает true и nil, когда будет возвращено false.let grades = [8, 9, 10, 1, 2, 5, 3, 4, 8, 8] let goodGrades = grades.all(where: { $0 > 7 }) print(goodGrades) // [8, 9, 10, 8, 8]
Поиск элемента в списке Python
Сегодня я расскажу, как проверить, содержит ли список элемент с помощью разных операторов в Python.
Содержание
- Используя цикл for
- Используя оператор in
- Используя оператор not in
- С помощью лямбда функции
- Используя функцию any
- Используя метод count
- Заключение
Используя цикл for
В качестве примера, я буду использовать список строк, содержащих несколько животных:
animals = ['Dog', 'Cat', 'Bird', 'Fish']
Простой и рудиментарный метод проверки, содержит ли список элемент: наш метод проходит через элемент и проверяет, соответствует ли элемент, на котором мы находимся, тому, который мы ищем.
for animal in animals: if animal == 'Bird': print('Chirp!')
Вывод программы:
Chirp!
Используя оператор in
Теперь более лаконичным подходом было бы использование встроенного оператора in, но с оператором if вместо оператора for. В паре с if он возвращает True, если элемент существует в последовательности или нет. Синтаксис оператора in выглядит следующим образом:
element in list
Используя этот оператор, мы можем сократить наш предыдущий код в один оператор:
if 'Bird' in animals: print('Chirp')
Вывод программы:
Этот подход имеет ту же эффективность, что и цикл for, поскольку оператор in, используемый таким образом, вызывает функцию list. __contains__, которая по своей сути циклически проходит через список — хотя это гораздо читабельнее.
Используя оператор not in
Вы можете использовать оператор not in, который является логической противоположностью оператору in. Он возвращает True, если элемент не присутствует в последовательности.
Давайте перепишем предыдущий пример кода, чтобы использовать оператор not in:
if 'Bird' not in animals: print('Chirp')
Запуск этого кода ничего не даст, так как Bird присутствует в нашем списке.
Но если мы попробуем это с Wolf:
if 'Wolf' not in animals: print('Howl')
Вывод программы:
С помощью лямбда функции
Еще один способ проверить, присутствует ли элемент — отфильтровать все, кроме этого элемента, точно так же, как просеять песок и проверить, остались ли в конце какие-нибудь раковины. Встроенный метод filter() принимает в качестве аргументов лямбда-функцию и список. Здесь мы можем использовать лямбда-функцию для проверки нашей строки «Bird» в списке animals.
Затем мы оборачиваем результаты в list(), так как метод filter() возвращает объект filter, а не результаты. Если мы упакуем объект filter в список, он будет содержать элементы, оставшиеся после фильтрации:
retrieved_elements = list(filter(lambda x: 'Bird' in x, animals)) print(retrieved_elements)
Вывод программы:
['Bird']
Сейчас этот подход не самый эффективный. Это довольно медленнее, чем предыдущие три подхода, которые мы использовали. Сам метод filter() эквивалентен функции генератора:
(item for item in iterable if function(item))
Замедление производительности этого кода, помимо всего прочего, происходит из-за того, что мы преобразуем результаты в список в конце концов, а также выполняем функцию для элемента на каждой итерации.
Используя функцию any
Еще один отличный встроенный подход заключается в использовании функции any, которая является просто вспомогательной функцией, которая проверяет, есть ли какие-либо (по крайней мере 1) экземпляры элемента в списке. Он возвращает True или False в зависимости от наличия или отсутствия элемента:
if any(element in 'Bird' for element in animals): print('Chirp')
Поскольку это приводит к True, наш оператор print сработает:
Этот подход также является эффективным способом проверки наличия элемента. Он ничем не уступает первым трём проверкам!
Используя метод count
Наконец, мы можем использовать функцию count, чтобы проверить, присутствует ли элемент или нет:
list.count(element)
Эта функция возвращает вхождение данного элемента в последовательность. Если он больше 0, мы можем быть уверены, что данный элемент находится в списке.
Давайте проверим результаты функции count:
if animals. count('Bird') > 0: print("Chirp")
Функция count по своей сути зацикливает список, чтобы проверить количество вхождений, и этот код приводит к запуску print:
Заключение
В этой статье я рассмотрел несколько способов, как проверить, присутствует ли элемент в списке или нет. Я использовал цикл for, операторы in и not in, а также методы filter, any и count.
Массив | Поиск — GeeksforGeeks
Перейти к содержимому
Содержание
- Последнее обновление: 28 июня, 2021
Последние статьи по поиску массива
- Search, Insert and Delete In Unsorted Arrame
- 9
- . отсортированный массив
- Дан массив A[] и число x, проверить наличие пары в A[] с суммой x
- Поиск в массиве, где соседние отличаются не более чем на k
- Поиск общих элементов в трех отсортированных массивах
- Поиск положения элемента в отсортированном массиве бесконечных чисел
- Поиск единственного повторяющегося элемента от 1 до n-1
- Найти элемент, который встречается один раз
- Максимальная сумма подмассива, исключая определенные элементы
- Максимальная равновесная сумма в массиве
- Индекс равновесия массива
- Лидеры в массиве
- Потолок в отсортированном массиве
- Элемент большинства
- Проверка элемента большинства в отсортированном массиве
- Проверка наличия в массиве элемента большинства
- Метод двух указателей
- Поиск элемента пика
- Поиск двух повторяющихся элементов заданный массив
- Найти фиксированную точку в заданном массиве
- Найти подмассив с заданной суммой
- Максимальная сумма триплетов в массиве
- Триплет наименьшей разницы из трех массивов
- Найти триплеты, сумма которых равна заданному значению
- Найти все триплеты с нулевой суммой
- Все уникальные триплеты, сумма которых равна заданному значению
- Подсчитать триплеты, сумма которых меньше заданного значения
- Вывести все триплеты в отсортированном массиве которые образуют AP
- Количество уникальных троек, XOR которых равно нулю
- Найти тройку, сумма двух равна третьему элементу
- Найти число, встречающееся нечетное количество раз
- Найти пропущенное число
- Подсчитать количество вхождений (или частоту) в отсортированном массиве
- Дан отсортированный массив и число x, найти пару в массиве, сумма которых ближе всего к x
- Подсчитать единицы в отсортированном двоичном массиве
- Найти первое повторяющийся элемент в массиве целых чисел
- Найти потерянный элемент из дублированного массива
- Найти повторяющийся и отсутствующий | Добавлено 3 новых метода
- Найти два числа с нечетными вхождениями в несортированном массиве
- Найти пару с заданной разностью 92Logn) Решение)
- Найти подмассив с нулевой суммой
- Найти элемент в массиве, где разница между соседними элементами равна 1 элементов в массиве, сумма которых равна сумме остальных элементов массива
- Проверка наличия в данном массиве повторяющихся элементов на расстоянии k друг от друга
- Поиск элемента в несортированном массиве с использованием минимального количества сравнений
- Подсчет только повторяющихся элементов в отсортированном массиве последовательных элементов
- Поиск элемента в отсортированном массиве, частота которого больше или равна n/2.
- Минимальная абсолютная разность соседних элементов в круговом массиве
- Поиск первого, второго и третьего минимальных элементов в массиве
- Программа для поиска минимального (или максимального) элемента массива
- Ближайший больший элемент для каждого элемента массива из другого массива
- Подсчет частот всех элементов в массиве за O(1) дополнительного пространства и O(n) времени
- Пара с заданной суммой и максимальным кратчайшим расстоянием от конца
- Удалить элемент из массива (используя два обхода и один обход)
- Подсчет инверсий размера три в заданном массиве
- Подсчет пар с заданной суммой
- Двоичный поиск в отсортированный вектор пар
- Захват дождевой воды
- Замена элемента делает элементы массива последовательными
- k-й отсутствующий элемент в отсортированном массиве
- Медиана двух отсортированных массивов с разными размерами в O(log(min(n, m)) )
- Вывести необычные элементы из двух отсортированных массивов
- Неповторяющийся элемент
- Наиболее часто встречающийся элемент в массиве
- Наименее часто встречающийся элемент в массиве
- Максимальная разница между двумя подмножествами m элементов
- Максимальная сумма возрастающих элементов из n массивов
- Пары, одна из которых кратна другой
- Найти количество пар в массиве, для которых их XOR равно 0
- Минимальное расстояние между двумя вхождениями максимум
- Найти конечное значение, если мы удваиваемся после каждого успешного поиска в массиве
- Последний повторяющийся элемент в отсортированном массиве
- Найти элемент массива, все элементы которого делятся на него
- Найти k максимальных элементов массива в исходном порядке
- Максимум в массиве, который не менее чем в два раза превышает другие элементы
- Последовательные ступени на крышу
- Максимальная разница между группами размера два
- Минимальная разница между группами размера два
- Ближайшие числа из списка несортированных целых чисел
- Максимальная абсолютная разница сумм значений и индексов
- Количество локальных экстремумов в массиве
- Проверка наличия в массиве мажоритарного элемента
- Поиск ближайшего числа в массиве
- Количество пары с максимальной суммой
- Вывести n наименьших элементов из данного массива в их первоначальном порядке
- Найти первые k натуральных чисел, отсутствующих в данном массиве
- Благородные целые числа в массиве (количество больших элементов равно значению)
- Минимальная сумма абсолютной разности пар двух массивов
- Найти сумму неповторяющихся (различных) элементов в массиве
- Проверить, можно ли составить арифметическую прогрессию из заданного массива
- Минимальное произведение подмножества массива
- Подсчет способов выбора пары с максимальной разницей
- Повторный поиск элемента путем его удвоения после каждого успешного поиска
- Максимальная сумма попарного произведения в массиве с отрицательным значением разрешено
Быстрые ссылки:
- «Проблемы с практикой» на массивах
- ‘Veizzes’ на массивах
- ‘Видеоучебные пособия. убедитесь, что у вас есть лучший опыт просмотра на нашем веб-сайте. Используя наш сайт, вы
подтверждаете, что вы прочитали и поняли наши Политика в отношении файлов cookie & Политика конфиденциальности
Начните свое путешествие по программированию прямо сейчас!
Поиск массивов NumPy
❮ Предыдущий Далее ❯
Поиск в массивах
Вы можете искать в массиве определенное значение и возвращать индексы, которые находят совпадение.
Для поиска в массиве используйте метод
where()
.Пример
Найти индексы, где значение равно 4:
импортировать numpy как np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where (обр == 4)
print(x)
Попробуйте сами »
Приведенный выше пример вернет кортеж:
(array([3, 5, 6],)
Это означает, что значение 4 присутствует в индексе 3, 5 и 6.
Пример
Найдите индексы, в которых значения четные:
импортировать numpy как np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 0)
print(x)
Попробуйте сами »
Пример
Найти индексы, в которых значения нечетные:
импортировать numpy как np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 1)
print(x)
Попробуйте сами »
Search Sorted
Существует метод
searchsorted()
, который выполняет двоичный поиск в массиве, и возвращает индекс, в который будет вставлено указанное значение для сохранения порядок поиска.Предполагается, что метод searchsorted()
используется для отсортированных массивов.Пример
Найдите индексы, в которые нужно вставить значение 7:
импортировать numpy как np
arr = np. array([6, 7, 8, 9])
х = np.searchsorted(arr, 7)
print(x)
Попробуйте сами »
Объяснение примера: число 7 должно быть вставлено в индекс 1, чтобы сохранить порядок сортировки.
Метод начинает поиск слева и возвращает первый индекс, где число 7 уже не больше следующего значения.
Поиск с правой стороны
По умолчанию возвращается крайний левый индекс, но мы можем указать
side='right'
, чтобы вместо этого возвращался крайний правый индекс.Пример
Найдите индексы, в которые нужно вставить значение 7, начиная с справа:
импортировать numpy как np
arr = np.array([6, 7, 8, 9])
х = np.searchsorted(arr, 7, side=’right’)
print(x)
Попробуйте сами »
Объяснение примера: число 7 должно быть вставлено в индекс 2, чтобы сохранить порядок сортировки.
Метод начинает поиск справа и возвращает первый индекс, где число 7 уже не меньше следующего значения.
Несколько значений
Для поиска более одного значения используйте массив с указанными значениями.
Пример
Найдите индексы, в которые следует вставить значения 2, 4 и 6:
импортировать numpy как np
arr = np.array([1, 3, 5, 7])
х = np.searchsorted(arr, [2, 4, 6])
print(x)
Попробуйте сами »
Возвращаемое значение представляет собой массив:
[1 2 3]
, содержащий три индекса, в которые должны быть вставлены 2, 4, 6 в исходном массиве для поддержания порядка.Проверьте себя с помощью упражнений
Упражнение:
Используйте правильный метод NumPy, чтобы найти все элементы со значением 4.
массив = np.массив ([1, 2, 3, 4, 5, 4, 4]) х = np.(обр == 4)
Начать упражнение
❮ Предыдущий Следующий ❯
ВЫБОР ЦВЕТА
Лучшие учебники
Учебник по HTML
Учебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3. CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery900 Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQueryОсновные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
9005 FORUM | ОW3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.