2017-02-19 9 views
0

Я хотел бы написать функцию для возврата набора строк с использованием понимания списка python, если какой-либо из переданных аргументов находится в списке. Тем не менее, он бросает требует строки в качестве левого операнда, а не кортеж, и при попытке с другим циклом он бросает локальной переменная J обращаться до присвоенияПонимание списка с помощью * 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) 

я, конечно, мог бы сделать это с для петель, но я пытаясь использовать понимание списка. Любые намеки? Благодарю.

ответ

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 на элементы.

+0

Ах, отлично! Хороший и лаконичный! Благодаря! – illpack

Смежные вопросы