我试图打印列表列表的矩阵。
例如,输入可以是:
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进行迭代,但是我没有成功实现这一点。
任何提示? 提前谢谢!
答案 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")]