我有这样的列表列表如下:
vrt = [[1,3,3,8,5,4,2,1,5,6],
[2,4,3,3,6,8,1,3,5,6],
[4,5,6,4,7,4,3,6,4,7],
[2,8,7,0,0,7,4,7,8,0],
[2,3,4,7,0,8,7,6,3,8],
[3,7,9,0,8,5,3,2,3,4],
[1,5,7,7,6,4,2,3,5,6],
[0,6,3,3,6,8,0,6,7,7],
[0,1,3,2,8,0,0,0,0,0],
[3,1,0,3,6,7,0,5,3,1],
[1,3,5,7,0,8,6,5,3,1],
[3,6,3,1,3,5,8,7,5,1],
[4,3,6,0,0,8,4,7,5,3],
[3,5,6,8,6,3,1,3,5,2]]
我需要编写一个函数来读取evey行,将每行中的所有整数相加并将每行的结果作为新列表返回,如果这个特定列表的结果是[38, 41, 50...42]
,那么只是每个列表的总和。
到目前为止,我尝试过这样做
def po_vrstah(vrt):
s = []
line = vrt.read().split('\n')
vsota = sum(line)
s.append(vsota)
return s
所以我做了一些研究,显然那些读取和拆分('\n'
)只能用于阅读我认为的文件?
所以我的问题是,我如何使用类似的方法来解决这个问题?有没有办法以与文件类似的方式读取列表?
答案 0 :(得分:7)
这更简单:
>>> print map(sum, vrt)
答案 1 :(得分:5)
使用列表理解:
[sum(lst) for lst in vrt]
或者,如果您使用的是Python 2,也可以使用map()
:
map(sum, vrt)
你是正确的,分割换行只对字符串有用(无论是从文件中读取还是其他)。
答案 2 :(得分:3)
只是:
your_sum = [sum(i) for i in vrt]
答案 3 :(得分:2)
试试这个:
[sum(x) for x in vrt]
答案 4 :(得分:1)
这有效:
def po_vrstah(vrt):
return [sum(line) for line in vrt] # this is a list comprehension
这将vrt中的每个列表逐个分配给变量行。 然后,每个列表中的变量由sum()求和,并将结果按顺序附加到列表中。 要了解列表推导,请查看here