0

从这两个列表中:

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

我想用第二个列表中的那些对象填充第三个列表,前提是他的某些名称与第一个列表中的一个名称匹配。

在前面的示例中,第三个列表必须是:

["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 回答