Python 对多个列表的列表理解

Python 对多个列表的列表理解,python,regex,Python,Regex,我突然发现了一个很难理解的问题,我无法解决。因此,我有两个列表,如下所示: a=[[....],[....],[....]] b=[[....],[....],[....]] len(a)==len(b) including sublists i.e sublists also have the same dimension. 现在我想重新编译,它看起来像: [re.compile(_subelement_in_a).search(_subelement_in_b).group(1)] [[

我突然发现了一个很难理解的问题,我无法解决。因此,我有两个列表,如下所示:

a=[[....],[....],[....]]
b=[[....],[....],[....]]
len(a)==len(b) including sublists i.e sublists also have the same dimension.
现在我想重新编译,它看起来像:

[re.compile(_subelement_in_a).search(_subelement_in_b).group(1)]
[[re.compile(str(x)).search(str(y)).group(1) for x in a] for y in b]
我想知道如何使用list compherension实现上述功能-类似于:

[re.compile(_subelement_in_a).search(_subelement_in_b).group(1)]
[[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(.*?)>"""]]
使用一对一映射。i、 e检查是否:

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]

自由地使用
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
将并行子列表中的元素配对在一起。

自由地使用
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
将并行子列表中的元素配对在一起。

听起来像是在寻找
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)
]

听起来你在找
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)
]


我刚刚对这个问题进行了编辑-b的子元素比a的子元素有更多的元素-想知道你的解决方案是否仍然适用。我试过了,但它对这个案例不起作用。嗯,不,但你说子列表是相同的维度。你已经宣布那是无效的。除其他问题外,现在还必须指定如何包装多余的元素(镜像?重复?填充?)。您最好只填充
a
子列表。嗯。。你能解释一下填充a子列表的意思吗?要明确的是,在“b”中,我在每个子列表中都有一个正则表达式列表(比如dim 100),要根据“a”的每个子列表元素进行评估——如果这有意义的话。以某种方式使它们的长度相同。我不知道您真正想要解决的是什么问题(请参阅:)。对此我感到非常抱歉-我犯了一个错误-如果有帮助,我已经提供了一个示例。再次对我在这个问题上的疏忽表示抱歉。p、 学生:XY问题确实教会了我一些东西!我刚刚对这个问题进行了编辑-b的子元素比a的子元素有更多的元素-想知道你的解决方案是否仍然适用。我试过了,但它对这个案例不起作用。嗯,不,但你说子列表是相同的维度。你已经宣布那是无效的。除其他问题外,现在还必须指定如何包装多余的元素(镜像?重复?填充?)。您最好只填充
a
子列表。嗯。。你能解释一下填充a子列表的意思吗?要明确的是,在“b”中,我在每个子列表中都有一个正则表达式列表(比如dim 100),要根据“a”的每个子列表元素进行评估——如果这有意义的话。以某种方式使它们的长度相同。我不知道您真正想要解决的是什么问题(请参阅:)。对此我感到非常抱歉-我犯了一个错误-如果有帮助,我已经提供了一个示例。再次对我在这个问题上的疏忽表示抱歉。p、 学生:XY问题确实教会了我一些东西!像这样改变问题参数意味着你一开始没有好好尝试这个问题,因为你没有注意到这个问题。你有没有理由认为你必须通过列表理解来解决这个问题?你愿意接受其他解决方案吗?是的,我真的愿意接受任何解决方案。我只是认为列表理解是一个很好的解决方法。像这样更改问题参数表明你没有在一开始就尝试过这个问题,因为你没有注意到这个问题。你有没有理由认为你必须用列表理解来解决这个问题?你愿意接受其他解决方案吗?是的,我真的愿意接受任何解决方案。我只是认为列表理解是一个很好的解决方法。我为这个错误道歉-这是一个疏忽。如果有帮助的话,我已经提供了一个例子。@user2152572:在内部列表中,您应该使用
来表示x在xs中表示y在ys中表示
而不是再次使用zip。这样嵌套for会使列表包含x和y的所有组合。我一直在尝试使用类似:[[re.compile(x).search(y).group(1)for x in b]for y in a]的东西,但这不起作用。@user2152572。请参阅我的编辑。在第一个级别中,您希望使用zip获取每一对列表。在内部层面,你只需要使用“简单”的列表理解,就像你已经知道的那样。你的编辑似乎不起作用-我将继续尝试和更新。我为错误道歉-这是一个疏忽。如果有帮助的话,我已经提供了一个例子。@user2152572:在内部列表中,您应该使用
来表示x在xs中表示y在ys中表示
而不是再次使用zip。这样嵌套for会使列表包含x和y的所有组合。我一直在尝试使用类似:[[re.compile(x).search(y).group(1)for x in b]for y in a]的东西,但这不起作用。@user2152572。请参阅我的编辑。在第一个级别中,您希望使用zip获取每一对列表。在内部层面,你只需要使用“简单”的列表理解,就像你已经知道如何做。你的编辑似乎不起作用-我会继续尝试和更新。