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

Вызов программирования Python – подсчет пары

Забавная проблема программирования Python для практики ваших навыков. Подсчитайте количество пар значений, хранящихся в списке Python.

Автор оригинала: Robin Andrews.

Вот веселая алгоритмическая проблема для вас.

Учитывая список целых чисел, напишите функцию, чтобы найти общее количество полных пар, содержащихся в списке.

Например: для ввода

[3, 1, 2, 3, 1, 2] ,

Возвращаемое значение должно быть

3

потому что есть 2 1 S, 2 2 S и 2 3 с.

4 не имеет соответствующей пары.

Изображение выше дает визуальное представление проблемы.

Идите сейчас по проблеме. Вот функциональная заглушка и некоторые утверждения, чтобы вы начали. Если вы не знакомы с Assert В Python это просто основные тесты, которые будут повышать ошибки, если они неверны. Если вы запустите код кода и получаете нет AssertionError S, это означает, что все тесты, пройденные, и ваш код правильный.

Подсчет пар Python Coding Choda

def count_pairs(items):
    pass


items = []
assert count_pairs(items) == 0

items = [1]
assert count_pairs(items) == 0

items = [3, 1, 2, 3, 1, 2]
assert count_pairs(items) == 3

items = [3, 1, 2, 3, 1, 2, 4]
assert count_pairs(items) == 3

items = [4, 3, 1, 2, 3, 1, 2, 4]
assert count_pairs(items) == 4

items = [9, 9, 9, 9, 9, 9, 9, 9, 9]
assert count_pairs(items) == 4

Подсчет пар Python Coding Choda

Как вы попали на?

Нажмите ниже, чтобы увидеть мое начальное решение этой проблемы. Тогда я покажу вам альтернативы и уточнения.

def count_pairs(items):
    # Create a dictionary to store the frequencies of items
    frequencies = {}

    # Iterate through items and store frequencies of each item
    for item in items:
        if item in frequencies:
            frequencies[item] += 1
        else:
            frequencies[item] = 1

    # Initialise result
    num_pairs = 0
    # Calculate the number of complete pairs for each item and update result
    for key in frequencies:
        num_pairs += frequencies[key] // 2

    return num_pairs

Подход в вышеупомянутом решении состоял в том, чтобы создать словарь частот для каждого уникального элемента в списке, а затем использовать Целочисленное разделение ( // ) 2 Чтобы потом найти, сколько полных пар были для каждого ключа. Это работает, потому что, например,

5 // 2 = 2
4 // 2 = 2

Счетчик Python

Создание Частоты Словарь в приведенном выше растворе может быть упрощен от Счетчик от Python Коллекции модуль. Это удобно маленький инструмент, о котором стоит знать о. Вам нужно будет импортировать его, чтобы использовать его.

from collections import Counter


def count_pairs(items):
    frequencies = Counter(items)
    num_pairs = 0
    for key in frequencies:
        num_pairs += frequencies[key] // 2
    return num_pairs

Решение палей Python Counting Pairs Программирование проблем с использованием наборов

Другой подход, который вы можете использовать для этой проблемы, – это использование наборов. Вы можете узнать больше о наборах Python здесь. Основная идея заключается в том, что набор создан из списка элементов, который содержит только экземпляр Singe каждого значения в списке. Тогда простое дело подсчитать количество элементов, соответствующих каждому набору элементов в исходном списке.

def count_pairs(items):
    num_pairs = 0
    for item in set(items):
        num_pairs += items.count(item) // 2
    return num_pairs

Для суперкократкой версии вышеуказанного решения вы можете сделать это:

def count_pairs(items):
    return sum([items.count(i) // 2 for i in set(items)])

Там это люди. Я надеюсь, что у вас была хорошая попытка этого вызова Python Programming, и Вам удалось решить это самостоятельно или нет, вы узнали что-то в пути.

Счастливые вычисления.