Задача: Три списка

Создайте функцию, которая будет принимать три списка целых чисел (lst1, lst2, lst3) и возвращать сумму чисел, которые являются общими для всех трех списков.

Пример:

sum_common([1, 2, 3], [5, 3, 2], [7, 3, 2]) ➞ 5
// 2 и 3 являются общими для всех трех списков.

sum_common([1, 2, 2, 3], [5, 3, 2, 2], [7, 3, 2, 2]) ➞ 7
// 2, 2 и 3 являются общими для всех трех списков.

sum_common([1], [1], [2]) ➞ 0

Варианты решений:

from collections import Counter

def sum_common(lst1, lst2, lst3):
    return sum((Counter(lst1) & Counter(lst2) & Counter(lst3)).elements())
def sum_common(lst1, lst2, lst3):
	from collections import Counter
	a, b, c = Counter(lst1), Counter(lst2), Counter(lst3)
	total = []
	for key in a.keys():
		repeated = min([a[key], b[key], c[key]])
		total.append(key * repeated)
	return sum(total)
sum_common = lambda lst1, lst2, lst3: sum(x for x in lst1 if x in lst2 and x in lst3)
def sum_common(lst1, lst2, lst3):
	value = 0
	for i in range(len(lst1)):
		if lst1[i] in lst2 and lst1[i] in lst3:
			value += lst1[i]
	return value

1 комментарий к “Задача: Три списка”

  1. Аноним

    Третье Решение неправильное
    print(sum_common([1, 2, 2, 3], [5, 3, 2, 0], [7, 3, 2, 9]))
    Возвращает 7, а должно 5

    def sum_common(lst1, lst2, lst3):
    value = 0
    for i in range(len(lst1)):
    if lst1[i] in lst2 and lst1[i] in lst3:
    value += lst1[i]
    return value

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *