0

これらの 2 つのリストから:

list_A = ["eyes", "clothes", "body" "etc"]
list_B = ["xxxx_eyes", "xxx_zzz", "xxxxx_bbbb_zzzz_clothes" ]

彼の名前の一部が最初のリストの名前の1つと一致する場合にのみ、2番目のリストのオブジェクトを3番目のリストに入力したいと思います。

前の例では、3 番目のリストは次のようにする必要があります。

["xxxx_eyes", "xxxxx_bbbb_zzzz_clothes"]
4

4 に答える 4

3

リスト内包表記を使用する場合、これは機能します。

list_C = [word for word in list_B if any(test in word for test in list_A)]
于 2012-09-16T02:23:25.890 に答える
2

これに正規表現を使用する場合:

search = re.compile("|".join(map(re.escape, list_A))).search
result = filter(search, list_B)

ほとんどの場合、Blenderの答えで十分かもしれませんが。

于 2012-09-16T02:31:49.587 に答える
1
In [1]: list_A = ["eyes", "clothes", "body" "etc"]

In [2]: list_B = ["xxxx_eyes", "xxx_zzz", "xxxxx_bbbb_zzzz_clothes" ]

In [7]: [x for x in list_B if any(y in list_A for y in x.split('_'))]
Out[7]: ['xxxx_eyes', 'xxxxx_bbbb_zzzz_clothes']
于 2012-09-16T02:35:20.640 に答える
0

最も遅いですが、最も簡単なのは次のとおりです。

list_A = ["eyes", "clothes", "body" "etc"]
list_B = ["xxxx_eyes", "xxx_zzz", "xxxxx_bbbb_zzzz_clothes" ]

list_C=[]
for _ in list_A:
    for __ in list_B:
        if _ in __:
            list_C.append(__)
于 2012-09-16T14:49:32.563 に答える