2017-02-19 8 views
0

渡された引数のいずれかがリストにある場合、Pythonのリストの理解を使用して文字列のセットを返す関数を書いてみたいと思います。しかし、それはをスローし、左のオペランドとして文字列が必要ですをタプルではない、とループのために相互にしようとしたとき、私は確実にforループでそれを行うことができますが、私は割り当て* argsを使ったリストの理解

def checkFor(*args): 
    return {a['title'] for a in soup.findAll('a') if 'title' in a.attrs and any(args in a['title'])} 

def checkFor_(*args): 
    return{a['href'] for a in soup.findAll('a') if 'title' in a.attrs and j in a['title'] for i, j in enumerate(args)} 

checkFor(a, b, c) 

前にそれが参照さローカル変数jをスローしますリストの理解を使用しようとしています。何かヒント?ありがとう。

答えて

0

あなたはほとんどありました:

def checkFor(*args): 
    return {a['title'] for a in soup.findAll('a') if 'title' in a.attrs and any(arg in a['title'] for arg in args)} 

あなたはちょうどその要素にタプルargsを展開するfor 1以上を逃しています。

+0

ああ、完璧!ニースと簡潔!ありがとう! – illpack