Skip to main content
 首页 » 编程设计

非重复整数的Python总和

2025年05月04日14findumars

我有 3 个 int,a,b,c。我想找到所有三个 int 的总和,前提是它们是唯一的。如果 a、b 或 c 具有与任何其他值相同的值,则它们不计入总和。

示例 1:

a = 3, b = 3, c =3 
sum = 0 

示例 2

a = 1, b = 3, c =3 
sum = 1 

这就是我所做的。没有那么多 if else 语句,是否有更 pythonic 的方式来做到这一点?

def lone_sum(a, b, c): 
    if a != b and b != c and a != c: 
        return a + b + c 
 
    elif a == b == c: 
        return 0 
 
    elif a == b: 
        return c 
 
    elif b == c: 
        return a 
 
    elif a == c: 
        return b 

请您参考如下方法:

from collections import Counter 
def lone_sum(a, b, c): 
    d = Counter([a, b, c]) 
    return sum(k for k in d if d[k]==1) 

添加任意数量的数字:

def lone_sum(*L): 
  d = Counter(L) 
  return sum(k for k in d if d[k]==1) 

添加恰好重复 c 次的数字:

def rep_sum(c, *L): 
  d = Counter(L) 
  return sum(k for k in d if d[k]==c) 

添加最多重复 c 次的数字:

def rep_sum(c, *L): 
  d = Counter(L) 
  return sum(k for k in d if d[k]<=c) 

...或者如果您感到无聊并想真正发挥创意:

def lone_sum(*L): 
  nums = set() 
  all_nums = set() 
  for num in L: 
    if num in nums: 
      nums.remove(num) 
    elif num not in all_nums: 
      all_nums.add(num) 
      nums.add(num) 
  return sum(nums)