用所有其他元素的总和替换每个元素
Replace every element by sum of all other elements
我必须用列表中所有其他元素的总和替换列表中的每个元素。
[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
实现此目的的优雅方法是:
>>> 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
。此外,您在迭代时正在修改原始列表,这将导致不同的结果(这对您来说是意想不到的结果)。您应该将这些值放在单独的列表中。
我必须用列表中所有其他元素的总和替换列表中的每个元素。
[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
实现此目的的优雅方法是:
>>> 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
。此外,您在迭代时正在修改原始列表,这将导致不同的结果(这对您来说是意想不到的结果)。您应该将这些值放在单独的列表中。