阅读python中的列表

时间:2013-12-16 17:56:57

标签: python list

我有这样的列表列表如下:

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')只能用于阅读我认为的文件?

所以我的问题是,我如何使用类似的方法来解决这个问题?有没有办法以与文件类似的方式读取列表?

5 个答案:

答案 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