두 리스트를 비교해서 서로 없는 원소만 return받으려고 합니다


두 리스트를 비교해서 서로 없는 원소만 return받으려고 합니다

예를들어

temp1 = ['One', 'Two', 'Three', 'Four']
temp2 = ['One', 'Two']

이면 temp3 = ['Three', 'Four'] 같이 나오는 함수를 짜고 싶은데 어떻게 하면 될까요? 제가 쓰는 코드는 너무 길고 파이썬스럽지는 않아서 더 좋은 방법을 알려주시면 좋겠습니다

소스코드

temp1 = ['One', 'Two', 'Three', 'Four']
temp2 = ['One', 'Two']

temp3 = []
for i in temp1:
    if i not in temp2:
        temp3.append(i)
  • 2016년 02월 04일에 작성됨

조회수 780


1 답변


좋아요
0
싫어요
채택취소하기

리스트를 집합으로 변환해서 차집합을 구할 수 있습니다.

temp3 = list(set(temp1) - set(temp2)) #순서 보존이 안됨

#또는

s = set(temp2)
temp3 = [x for x in temp1 if x not in s] #순서 보존됨
  • 2016년 02월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close