二次元リストを縦に足す

l = [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]

print l  # => [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 転置
print zip(*l)  # => [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

# 転置した後にタプルになるのが嫌?
print map(list, zip(*l))  # => [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

# 転置した各行を足し合わせる
print [reduce(lambda x, y: [x[0]+y], i, [0]) for i in zip(*l)]  # => [[12], [15], [18]]

# 要素一つならリストじゃなくてもいい?
print [reduce(lambda x, y: x+y, i, 0) for i in zip(*l)]  # => [12, 15, 18]

文字列から二次元リストに変換する。

a = '''1,2,3
       4,5,6
       7,8,9'''

# 改行でsplitして得られたリストを','でsplitして、得られたリストの各要素をintに変換
l = [[int(i) for i in j.split(',')] for j in a.split('\n')]

print l  # => [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print [reduce(lambda x, y: [x[0]+y], i, [0]) for i in zip(*l)]  # => [[12], [15], [18]]

intは意外と柔軟性があるみたいですね……。

a = '''11,        12,   13
    14,  15   ,  16   
          17,18 ,  19'''

print [[int(i) for i in j.split(',')] for j in a.split('\n')]
# => [[11, 12, 13], [14, 15, 16], [17, 18, 19]]
>>> int('            12          \r               \n\n')
12
>>> int('\r\n   33\n')
33
>>> int('\r\n\n\n         -            \r\n\n            13 \n\n')
-13
>>> int('2 7')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: invalid literal for int(): 2 7