다음 부분 :
(not x in sentence for x in banned)
에 관계없이 내용이 무엇이든의, True로 평가됩니다 발전기 식입니다.
여러 항목의 진위 값을 확인하려는 경우 문제를 기반으로 any
또는 all
기능을 사용할 수 있습니다. 이 경우
은 당신이
all()
이 필요하다고 보인다
또한
banned = ['apple', 'pear']
sentence = 'I will eat an apple'
if all(x not in sentence for x in banned):
print('ok')
이 부분 x not in sentence
가 전체 문자열 내 말을 회원을 확인하세요 않습니다. 즉, 입력 문자열 내의 단어 중 하나에 banned
내에 단어가 포함되어 있으면 True를 반환합니다. 단어 pear
을 포함하는 pearl
과 같습니다.
이 문제를 해결하는 한 가지 방법은 스플릿 된 텍스트의 멤버 자격을 확인하거나 정규식을 사용하는 것입니다.
또 다른 대안은 set
과 교차을 사용하는 것입니다 : 장 - FrançoisFabre가 방금 교차로를 확인하려면 이후 set.isdisjoint()
보다는 set.intersection
를 사용하는 것이 좋습니다 언급
banned = {'apple', 'pear'} # use set instead of list
sentence = 'I will eat an apple'
if banned.intersection(sentence.split()):
print('ok')
@으로.
는
banned = {'apple', 'pear'} # use set instead of list
sentence = 'I will eat an apple'
if not banned.isdisjoint(sentence.split()):
print('ok')
비 빈 목록 (어떤 값)를 사용하면'all' 키워드 뒤에있어 – FamousJameous
truthy입니다 - '만약 모든 (하지 금지에 x의 문장 X) : 인쇄 ('OK ')' – asongtoruin
'x not in sentence'를 사용하면 조금 더 명확 해집니다. – barny