如何打印多个列表的矩阵

时间:2014-11-30 19:10:44

标签: python list io

我试图打印列表列表的矩阵。

例如,输入可以是:

l1 = [[2,3],[3,2]]
l2 = [[1,2],[2,1],[2,2],[3,3]]
l3 = [[1,1],[1,3],[3,1]]

输出应基于坐标。更具体一点:我搜索列表以查看哪一个包含坐标,然后打印我找到坐标的列表名称。

编辑(感谢@sweeneyrod):列表中的每个坐标都是(仅一次)。

例如:l1包含[2,3],所以矩阵中的那个位置" l1"打印出来。 另一个例子:l3包含[1,1],所以在位置(1,1)上,打印出l3。

输出:

l3 l2 l3
l2 l2 l1
l3 l1 l2

我认为可以使用rowCount和columnCount进行迭代,但是我没有成功实现这一点。

任何提示? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

>>> l1 = [[2,3],[3,2]]
>>> l2 = [[1,2],[2,1],[2,2],[3,3]]
>>> l3 = [[1,1],[1,3],[3,1]]
>>> b=[l1,l2,l3]
>>> import numpy as np:
>>> a=np.zeros((3,3),dtype=str) # numpy array of empty strings
>>> a
array([['', '', ''],
       ['', '', ''],
       ['', '', '']], 
      dtype='|S1')
>>> for i,j in enumerate(b):
...    for k in j:
...       a[k[0]-1][k[1]-1]='l'+str(i+1)
... 
>>> for i in a: print i
... 
['l3', 'l2', 'l3']
['l2', 'l2', 'l1']
['l3', 'l1', 'l2']

初始化矩阵而不是numpy:

>>> a=[]
>>> cols=3
>>> rows=2
>>> a = [[0]*rows for i in range(cols)]
>>> a
[[0, 0], [0, 0], [0, 0]]

答案 1 :(得分:0)

首先,你需要将这些变量放在一个列表中(或做一些坏的和丑陋的内省):

lists = [l1, l2, l3]

然后,在坐标上迭代两个嵌套的for循环:

for y in range(max_y):
    for x in range(max_x):
        for index, value in enumerate(lists):
            if [x, y] in value:
                print("l{}".format(value), end=" ")
                break
    print()

函数enumerate迭代某事及其索引:

list(enumerate(["a", "b", "c"])) == [(1, "a"), (2, "b"), (3, "c")]