0
    a = ['ava','olivia','hannah','olivia']
    b = ['aa','ab','ac','av']

    for i in a:
        for j in b:
            if j in i:
                print (i)
    #output: ava


    for i in a:
        if any(j in i for j in b):
            print (i)
    #output: ava

いくつかの要素を含む2つのリストがあります。各リストに2つの要素があり、各リストに1つの要素がある場合。

取得する良い方法はありますか?

4

2 に答える 2

5

これで十分です:

print [word for word in a if any(part in word for part in b)]

filter、、mapまたはを使用する必要はありませんlambda

于 2012-10-07T12:42:43.910 に答える
0

必ずしも優れているわけではありませんが、それらはワンライナーです。

a = ['ava','olivia','hannah','olivia']
b = ['aa','ab','ac','av']

result = filter(None, map(lambda x: x if any(map(lambda y: y in x, b)) else None, a))
print result

また:

result2 = filter(None, [x if y in x else None for x in a for y in b])
print result3

また:

result3 = filter(None, [x if any([y in x for y in b]) else None for x in a])
print result2
于 2012-10-07T12:35:41.813 に答える