Автор оригинала: 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, и Вам удалось решить это самостоятельно или нет, вы узнали что-то в пути.
Счастливые вычисления.