2 개의 이터 러블을 비교하고 두 이터 러블에 나타나는 항목을 인쇄하고 싶습니다.
>>> a = ('q', 'r')
>>> b = ('q')
# Iterate over a. If y not in b, print y.
# I want to see ['r'] printed.
>>> print([ y if y not in b for y in a])
^
그러나이 위치에 잘못된 구문 오류가 발생합니다 ^
. 이 람바 함수의 문제점은 무엇입니까?
답변
주문이 잘못되었습니다. 이 if
뒤에 있어야합니다 for
( if-else
삼항 연산자 에 있지 않는 한 ).
[y for y in a if y not in b]
그러나 이것은 작동합니다.
[y if y not in b else other_value for y in a]
답변
당신은 if
끝에 넣습니다 .
[y for y in a if y not in b]
목록 이해는 중첩 된 전체 지정 대응과 동일한 순서로 작성되며 기본적으로 위의 명령문은 다음과 같이 변환됩니다.
outputlist = []
for y in a:
if y not in b:
outputlist.append(y)
귀하의 버전이 대신 이것을 시도했습니다.
outputlist = []
if y not in b:
for y in a:
outputlist.append(y)
그러나 목록 이해 는 적어도 하나의 외부 루프로 시작 해야합니다 .
답변
목록 이해 공식 :
[<value_when_condition_true> if <condition> else <value_when_condition_false> for value in list_name]
따라서 다음과 같이 할 수 있습니다.
[y for y in a if y not in b]
시연 목적으로 만 : [y가 b에 없으면 y가 그렇지 않으면 a에 y가 거짓]
답변
이것은 람다 함수가 아닙니다. 목록 이해입니다.
순서를 변경하십시오.
[ y for y in a if y not in b]
답변
아래에 설명 된대로 내 상황에 대한 목록 이해에 대한 위에서 언급 한 제안을 조사하고 시도했지만 작동하지 않았습니다. 내가 여기서 뭘 잘못하고 있니?
sent_splt=[['good', 'case,', 'excellent', 'value.'], ['great', 'for', 'the', 'jawbone.'],['tied', 'to', 'charger', 'for', 'conversations', 'lasting', 'more', 'than', '45', 'minutes.major', 'problems!!']]
stop_set = ['the', 'a', 'an', 'i', 'he', 'she', 'they', 'to', 'of', 'it', 'from']
x=[a for a in sent_splt if a not in stop_set]
print(x)
단어를 필터링하지 않습니다.