파이썬 서로 다른 리스트를 비교하여 동일한 값만 따로 추출하는 방법좀 알려주세요...(왕초보)

조회수 10974회

number1 = int(input("해당 숫자의 배수를 구하기 : "))
# 예를들어 3의 배수를 1부터 ~ 999까지 뽑아낸다고 가정합니다.
number2 = int(input("한번더 필터할 배수 설정하기 : "))
# 예를들어 5의 배수를 1부터 ~999까지 뽑아낸다 가정.

set1 = [] # number1에서 3의 배수를 추출한 리스트를 저장하는 곳
set2 = [] # number2에서 5의 배수를 추출한 리스트를 저정하는 곳
for i in range(1,1000):
    if i % number1 == 0:
        set1.append(i)

for i in range(1,1000):
    if i % number2 == 0:
        set2.append(i)

print(set1)
print(set2)

안녕하세요. 간단하게 두개의 input값을 받아 배수를 추출한 뒤 리스트를 생성하여 비교하여 동일한 값만 뽑아내는 방법을 공부 해보려고 하는데 리스트간의 같은 값 비교를 어떻게 해야되는지 모르겠네요.... 왕초보 적인 질문인거 같은데, 방법좀 알려주세요 ㅠㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

3 답변

  • 안녕하세요

    results = []
    
    for s1 in set1:
        if s1 in set2:
            results.append(s1)
    
    print(results)
    

    이 코드를 추가하면 될것 같습니다.

    원래 리스트간의 비교를 하려면

    results = []
    
    for s1 in set1:
        for s2 in set2:
            if s1 == s2:
                results.append(s1)
    
    print(results)
    

    이렇게도 많이씁니다. 하지만 파이썬에는 if in 문법이 있어서 값이 리스트에 있는지 쉽게 확인할수있습니다.

    수고하세요!

    • 우와....감사합니다. 실행해보니 잘되네요. 좀더 공부해야겠네요 갈길이 멉니다.. 감사합니다. 알 수 없는 사용자 2019.3.7 16:38
    • 헉..대단한것도 아닌데 도움이 되셨다니 다행이네요. 공부도 화이팅하세요 ~! 최진우 2019.3.7 21:19
  • 같은 것인데 짧게 표현하면 이렇게도 할 수 있어요. 공부하신다고 하니, 이런 표현법도 익혀 보세요!

    lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69]
    lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
    lst3 = [value for value in lst1 if value in lst2]
    print(lst3)
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 교집합은 아래와 같이 구하면 됩니다.

    lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69]
    lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
    
    set(lst1).intersection(lst2)
    {9, 11, 26, 28}
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)