如何将列表中相同的整数相加?

2024-03-29 05:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

被困在学校的函数的一部分,它要求我在一个列表中添加所有相同的整数并返回总数。例如,给定列表[2,3,3]我希望6被返回,或者给定一个类似[5,6,5]的列表,我希望10被返回。既然我要把它作为if语句的一部分,那么最短的方法是什么?你知道吗

我尝试过使用索引,但我不知道如何让if语句实现哪些元素的组合是相同的,这样就可以将它们添加到一起并返回。你知道吗

注意:列表的长度永远不会超过3,我已经有了所有3个元素都相同的情况。这只是两个元素的结合,我有麻烦。你知道吗


Tags: 方法函数元素列表if情况整数语句
3条回答

如果if/elif语句:

if lst[0] == lst[1] == lst[2]:
    return 3 * lst[0]
elif lst[0] == lst[1] or lst[0] == lst[2]
    return 2 * lst[0]
elif lst[1] == lst[2]
    return 2 * lst[1]
else:
    return None # no duplicates

或者,如果您希望以后有更多相关的案例(例如,更长的列表),您可以将其概括为“返回列表中最常见项目的总和”。最简单的方法可能是使用一个循环来创建一个dict,其中包含每个唯一值的出现次数,然后使用另一个循环来查找最常见的项x及其计数n,然后返回x * n。你知道吗

以下代码涵盖所有三种情况,可在函数中使用:

#z=[3,4,5]
z=[3,4,4]
#z=[7,7,7]
y = [0,0]
y = y + z
print(y)
for x in set(y):
    y.remove(x)
b = y[-1]*len(y)
print(b)

以下工作列表长度不超过3(即0、1、2或3)

def sum_dup(a = 0, b = 0, c = 0):
  """ Using defaults allows strategy to Works with lists of length 0, 1, 2, or 3.  
      If we have fewer than three inputs then missing inputs are 0 by default """
  if a == b == c:
    # all three are equal
    return a + b + c
  elif a == b:
    # equal first & second
    return a + b
  elif b == c:
    # second & third
    return b + c
  elif a == c:
    # first & third
    return a + c
  else:
    # none are equal
    return 0

测试列表

lsts = [[5], [5, 5, 5], [], [0, 5], [2, 3, 3], [5, 0, 5]]

for lst in lsts:
  # *lst explands list into input for sum_dup
  # meaning same as sum_dup(lst[0], lst[1], etc.)
  print(f'List {lst} has sum {sum_dup(*lst)}')

输出

List [5] has sum 0
List [5, 5, 5] has sum 15
List [] has sum 0
List [0, 5] has sum 0
List [2, 3, 3] has sum 6
List [5, 0, 5] has sum 10

相关问题 更多 >