我有 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)
