我对一个尴尬的列表理解问题感到震惊,我无法解决。所以,我有两个列表如下所示:
a=[[....],[....],[....]]
b=[[....],[....],[....]]
len(a)==len(b) including sublists i.e sublists also have the same dimension.
现在我想做一个类似于:
的re.compile[re.compile(_subelement_in_a).search(_subelement_in_b).group(1)]
我想知道如何使用list compherension实现上述功能 - 例如:
[[re.compile(str(x)).search(str(y)).group(1) for x in a] for y in b]
..但显然上述情况似乎不起作用,我想知道是否有人能指出我正确的方向。
修改的
我刚刚意识到b的子列表比a的子列表有更多的元素。所以,例如:
a=[[1 items],[1 items],[1 items]]
b=[[10 item], [10 item], [10 item]]
我仍然希望像上面的问题那样做:
[[re.compile(str(x)).search(str(y)).group(1) for x in b] for y in a]
,输出看起来像:
c = [[b[0] in a[0] items],[b[1] in a[1] items],[b[2] in a[2] items]]
示例:
a=[["hgjkhukhkh"],["78hkugkgkug"],["ukkhukhylh"]]
b=[[r"""a(.*?)b""",r"""c(.*?)d""",r"""e(.*?)f""",r"""g(.*?)h""",r"""i(.*?)j"""],[r"""k(.*?)l""",r"""m(.*?)n""",r"""o(.*?)p""",r"""q(.*?)r"""],[r"""s(.*?)t""",r"""u(.*?)v""",r"""x(.*?)y""",r"""z(.*?)>"""]]
使用一对一映射。即检查是否:
elements of sublists of b[0] are present in sublist element of a[0]
elements of sublists of b[1] are present in sublist element of a[1]
elements of sublists of b[2] are presnet in sublist element of a[2]
答案 0 :(得分:2)
自由地使用zip
:
[[re.search(x, y).group(1) for x,y in zip(s,t)] for s,t in zip(a,b)]
第一个zip(a,b)
生成子列表对列表。第二个zip
将并行子列表中的元素组合在一起。
答案 1 :(得分:2)
听起来像是在寻找zip
?它需要一对列表并将其转换为成对列表。
[
[my_operation(x,y) for x,y in zip(xs, ys)]
for xs, ys in zip(a, b)
]
- 编辑。要求已更改:
[
[[regex(p, s) for p in patterns] for s in strings]
for strings, patterns in zip(a, b)
]