Рубрики
Без рубрики

Установите и забудьте об этом

Как человек, который очень любит фэнтезийный футбол, концепция установки и забыть его, игрок – это один т … Tagged с Python, JavaScript, Codenewbie.

Как человек, который очень любит фэнтези -футбол, концепция сбора и забыть, с которым я очень знаком. По сути, это относится к тому, кто стоит начать независимо от их матча.

На этой неделе я слушал фэнтезийный футбол и слух, и забыл, что он заставил меня задуматься о сетях в программировании. Когда я впервые услышал слово, используемое в контексте программирования, я сразу подумал о двух вещах. Первым был карточная игра а вторым был мой учитель математики в старшей школе.

Оказывается, я на самом деле не был слишком далеко с любым ответом. Чтобы понять, что такое набор в программировании, это поможет понять, что такое математический набор.

Что такое набор в математике?

Для начала давайте посмотрим на определение Википедии.

Набор-это четко определенная коллекция различных объектов. Объекты, которые составляют набор (также известный как элементы или члены набора), могут быть чем угодно: числа, люди, буквы алфавита, другие наборы и так далее.

Это кажется довольно простым, ключевые слова там различны, и все что угодно. Это означает, что набор содержит эти уникальные объекты и что не имеет значения, что они.

Теперь, когда у нас есть элементарное понимание наборов, давайте посмотрим на наборы в программировании.

Что такое набор в программировании?

Давайте снова обратимся к Википедии для определения.

Набор – это абстрактный тип данных, который может хранить уникальные значения без какого -либо конкретного порядка. Это компьютерная реализация математической концепции конечного набора.

Таким образом, мы видим, что набор – это математический набор, просто реализованный компьютером. Если мы снова посмотрим на ключевые слова, они будут уникальными и без порядка. Это означает, что мы снова имеем дело с набором уникальных/различных ценностей. Мы также работаем с типом данных, который не имеет определенного порядка, похожий на что -то вроде словаря, хэша или объекта.

На что они похожи?

Давайте посмотрим на наборы на двух конкретных языках, JavaScript, который имел наборы с момента выпуска EmcaScript 2015 и Python, который поддерживает наборы с момента выпуска 2.4.

Давайте начнем с JavaScript, наборы создаются с Установить ключевое слово. Как и в случае с любым другим объектом, который мы создаем в JavaScript, мы используем Новый объект имени Синтаксис, как мы можем видеть ниже.

const foo = new Set([1,2,3])
console.log(foo)
// Set { 1, 2, 3 }

В Python мы используем что -то подобное, так как SET – это встроенный тип данных, у нас есть доступ к set () метод

foo = set([1, 2, 3])
print(foo)
# {1, 2, 3}

Как Python, так и Javascript используют очень похожий синтаксис, где мы создаем новый набор, используя список/массив соответственно. Наши набор конструкторов разрешают только один аргумент, поэтому мы должны использовать этот тип данных промежуточных данных для создания набора с несколькими значениями.

JavaScript

const foo = new Set(1,2,3)
// TypeError

Питон

foo = set(1,2,3)
# TypeError

Попытка передать несколько аргументов бросить этот тип ошибки, так как принят только 1 аргумент.

В какой цели они служат?

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

Помните, когда мы освещали определение набора? Одна из важных особенностей набора – это уникальность. Следовательно, одна великая цель наборов – проверить, содержит ли набор определенное значение.

const foo = new Set([1,2,3])
console.log(foo.has(1))
// true
foo = set([1, 2, 3])
print(1 in foo)
# True

Поскольку наборы не заказаны, мы можем делать подобные вещи, проверяя, содержит ли набор значение, быстрее, чем мы могли бы в списке/массиве. Чтобы расширить это дальше, давайте посмотрим, как мы получаем доступ к значениям в списке/массиве.

const foo = [1, 2, 3]
for(let i = 0; i < foo.length; i++) {
    if (foo[i] == 2) {
        console.log(true)
    }
}
// true

const bar = [1, 2, 3]
bar.includes(2)
// true
foo = [1, 2, 3]
for num in foo:
    if num == 2:
        print(True)
# True

bar = [1, 2, 3]
print(2 in bar)
# True

Итак, я сначала использовал простую петлю для нашего списка и массива. То есть указывать, что наш метод или в утверждении делает. Поскольку список/массив заказан, мы можем получить доступ к элементу через его индекс со временем выполнения O (1). Однако, когда нам нужно проверить, содержится ли значение в указанном списке/массиве, нам необходимо обратить внимание на всю коллекцию. Это означает, что у нас будет время выполнения O (n), так как мы должны итерации над коллекцией, чтобы проверить значение.

Наборы могут быть очень полезны для таких вещей, как удаление дубликатов и сравнение уникальности из -за того, что они содержат только уникальные значения. Хотя наборы являются математической концепцией, им не нужно чувствовать или казаться страшным. Как мы только что видели, они придумывают, содержит ли набор очень простой и, возможно, что более важно, очень быстро.

Рекомендации

Оригинал: “https://dev.to/austinbh/set-it-and-forget-it-59le”