0

我有一个包含 24,389 个值的列表,它们被细分为每个包含 29 个值的列表。因此,主列表包含 841 个子列表。

我已经对每个子列表中的每个元素进行了平方,并且我想总结每个子列表的元素。

例如像这样的子列表

[1,2,3] , [4,5,6]

应该给我总和 [6,15]

但是,我使用的代码尝试获取所有子列表的总和,因为它最后是一个非常大的数字,它只显示 NAN。

这是代码;

def square(number):
    return number ** 2

squaring_iterator = map(square, numbers)
squared_numbers = list(squaring_iterator)
print(squared_numbers)

Sum1 = sum(squared_numbers)
#print(Sum1)
final2 = [Sum1[i * n:(i + 1) * n] for i in range((len(Sum1) + n - 1) // n )]
print(final2)

我该如何解决这个问题?

谢谢!

4

3 回答 3

1

您可以使用sum函数和理解列表表达式

your_list = [[1,2,3], [4,5,6]] 
new_list = [sum(l) for l in your_list]
print(new_list)

输出:

[6, 15]
于 2021-06-13T17:19:21.073 回答
0

如果您无法修复它,请提供您的完整代码。

下面是我的代码


样品 1

from time import time
from random import randint


def square(number):
    return number ** 2


start_time = time()


data = [1, 2, 3, 4, 5, 6]


n = 3
numbers = [data[i:i+n] for i in range(0, len(data), n)]
print(len(numbers))

# 2


squared_numbers = [[square(_) for _ in sub] for sub in numbers]
print(squared_numbers)

# [[1, 4, 9], [16, 25, 36]]


final = [sum(s) for s in squared_numbers]
print(final)
[14, 77]


final2 = sum(final)
print(final2)

# 91


print(f'total time:{(time()-start_time)}')

# total time:3.0994415283203125e-05

什么时候randint(10**100, 10**101),才用1.1 sec.,用print()

样品 2

from time import time
from random import randint


def square(number):
    return number ** 2


start_time = time()


data = [randint(10**10, 10**11) for _ in range(24389)]


n = 29
numbers = [data[i:i+n] for i in range(0, len(data), n)]
print(len(numbers))


squared_numbers = [[square(_) for _ in sub] for sub in numbers]
print(squared_numbers)


final = [sum(s) for s in squared_numbers]
print(final)


final2 = sum(final)
print(final2)

# 89543746479132138668264091

print(f'total time:{(time()-start_time)}')

# total time:0.13712477684020996
于 2021-06-13T18:35:58.310 回答
-1

使用 numpy:

import numpy as np
lst = [[1,2,3], [4,5,6]]
sum_of_nums = np.array(lst).sum(1) # sums all elements in the sublists
print(sum_of_nums)
Output: [6, 15]
于 2021-06-13T17:18:15.410 回答