我必须用列表中所有其他元素的总和替换列表中的每个元素。
[1, 2, 3] => [5, 4, 3]
[1] => [0]
[2, 7, 9] => [16, 11, 9]
到目前为止我已经完成了:
for i in range(len(numbers)):
numbers[i] = sum[numbers[:i]] + sum[numbers[i+1:]]
return numbers
但我一直在TypeError
答案 0 :(得分:3)
实现这一目标的优雅方式将是:
>>> my_list = [1, 2, 3]
>>> [sum(my_list)-x for x in my_list]
[5, 4, 3]
或者,甚至可以更好地计算列表理解之外的sum
,这样您就不必每次都计算它(如 @Jean 所指出的那样):
>>> my_sum = sum(my_list)
>>> [my_sum-x for x in my_list]
[5, 4, 3]
您的代码问题:您没有致电()
致sum
,而是尝试使用[..]
访问其索引,从而导致TypeError
}。此外,您在迭代时修改原始列表,这将导致不同的结果(这对您来说是意想不到的结果)。您应该将这些值放在单独的列表中。