说我已经将n行x m列矩阵表示为嵌套的python列表,例如3行2列:
m = [ [1,2,3], ['a', 'b', 'c'] ]
将生成另一种kx m-matrix(k <= n)的通用和Python方法,该行的行中第二列中的值在序列中具有匹配项(即{{1}的子集) }。 因此,对于以下序列,存在“ a”和“ c”的匹配项:
m
结果矩阵s = ['j', 'a', 'c', 'e']
应该
m2
什么不起作用:
我的愚蠢尝试一直存在(它会产生错误/没有用,并且对许多列的可伸缩性较低):
m2 = [ [1,3], ['a','c'] ]
答案 0 :(得分:2)
您可以zip
行m
来标识列第二项在s
中存在的列,然后再次zip
列以输出行:
list(zip(*(c for c in zip(*m) if c[1] in s)))
这将返回:
[(1, 3), ('a', 'c')]
如果您需要将输出作为列表列表,则可以将zip
生成的元组映射到list
:
list(map(list, list(zip(*(c for c in zip(*m) if c[1] in s)))))
这将返回:
[[1, 3], ['a', 'c']]
如果s
中有很多项目,则可以选择先设置s
来提高查找效率:
s = set(s)
答案 1 :(得分:0)
尝试一下:
uarr