0

x=[1,2,5] y=[2,3,9] 我怎样才能得到结果 22?

我的代码有类型错误。

4

3 回答 3

6

我认为您想要内置sum功能。

>>> x = [1,2,5]
>>> y = [2,3,9]
>>> sum(x+y)
22

这与以下内容相同:

sum(x) + sum(y)

或者如果你喜欢 itertools:

sum(itertools.chain(x,y))

后两者效率更高。


sum接受一个迭代并总结它的所有元素。在处理列表+连接时,因此:

x+y

给你清单:

[1,2,5,2,3,9]

这是可迭代的,因此是sum.


如果你有一大堆列表,你可以让它变得更有趣:

>>> lists = [x,y]
>>> sum(sum(lst) for lst in lists)
22

最后一种形式很好,因为它可以微不足道地扩展到任意数量的列表 - 只需继续将它们附加到lists列表中,直到您准备好求和,然后将 1-liner 放入其中,然后就完成了。

当然,我想我们也可以用 itertools 做同样的事情:

sum(itertools.chain.from_iterable(lists))

如您所见,您有很多选择可以玩(并从中学习!:)。

于 2012-11-24T04:17:01.633 回答
1
>>> list1 = [1,2,5]

>>> list2 = [2,3,9]

>>> zip_list = [(x + y) for x, y in zip(list1, list2)]

>> zip_list

[3, 5, 14]

>>> sum(zip_list)

22
于 2012-11-24T06:09:03.077 回答
0
    sm=0
    for v in x+y:
         sm=sm+v
于 2012-11-24T05:39:25.880 回答