Создайте функцию, которая будет принимать три списка целых чисел (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
Третье Решение неправильное
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