0

私は解決できない厄介なリストの理解の問題に直面しています。したがって、次のような 2 つのリストがあります。

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)]

そして、リスト内包表記を使用して上記をどのように達成できるのか疑問に思っています-次のようなものです:

[[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(.*?)>"""]]

1 対 1 のマッピングを使用します。つまり、次のことを確認します。

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]
4

2 に答える 2

3

あなたが探しているように聞こえます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)
]
于 2013-03-11T01:23:39.503 に答える
2

zip自由に使用してください:

[[re.search(x, y).group(1) for x,y in zip(s,t)] for s,t in zip(a,b)]

1 つ目zip(a,b)は、サブリスト ペアのリストを生成します。2 番目zipは、並列サブリスト内の要素をペアにします。

于 2013-03-11T01:17:38.450 に答える