列表理解与* args

时间:2017-02-19 21:13:57

标签: python beautifulsoup iteration list-comprehension

如果任何传递的参数在列表中,我想编写一个函数来使用python的列表推导返回一组字符串。但是,它抛出需要字符串作为左操作数,而不是元组,并且当尝试使用另一个for循环时,它会抛出在赋值之前引用的局部变量j

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)

我肯定可以使用for循环,但我试图使用列表理解。任何提示?感谢。

1 个答案:

答案 0 :(得分: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)}

您只是缺少一个for来将元组args扩展为其元素。