>>> # a Python3 session to demonstrate "list comprehensions" ... >>> alist = [ i*i for i in range(10) ] >>> alist [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> alist2 = [ num for num in alist if num%2 == 0 ] >>> alist2 [0, 4, 16, 36, 64] >>> atable = [ [ num1 * num2 for num1 in alist ] for num2 in alist2 ] >>> atable [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 16, 36, 64, 100, 144, 196, 256, 324], [0, 16, 64, 144, 256, 400, 576, 784, 1024, 1296], [0, 36, 144, 324, 576, 900, 1296, 1764, 2304, 2916], [0, 64, 256, 576, 1024, 1600, 2304, 3136, 4096, 5184]] >>> # Note: pprint stands for "pretty print" ... >>> from pprint import pprint >>> pprint(atable) [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 16, 36, 64, 100, 144, 196, 256, 324], [0, 16, 64, 144, 256, 400, 576, 784, 1024, 1296], [0, 36, 144, 324, 576, 900, 1296, 1764, 2304, 2916], [0, 64, 256, 576, 1024, 1600, 2304, 3136, 4096, 5184]] >>> colsums = [ sum( [atable[i][j] for i in range(len(atable))] ) ... for j in range(len(atable[0])) ] >>> colsums [0, 120, 480, 1080, 1920, 3000, 4320, 5880, 7680, 9720] >>> exit()