ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3월 21일 TIL - 리스트의 요소들을 하나씩 비교하기
    TIL(Today I Learned) 2023. 3. 21. 20:09

      문제를 풀이하는 과정 중에 찍은 답안들과 정답을 비교해서 맞춘 개수를 확인하는 작업이 필요했다. 리스트의 요소들을 순서대로 하나씩 비교해야 하는데 반복문을 돌려야하는 건 알겠는데 어떻게 이걸 비교해야 한는 건지 알지 못했다. 하나의 리스트의 요소들을 차례대로 나열하고 다른 리스트의 요소들을 차례대로 나열해서 비교를 하려면 반복문을 두개를 써야하는 건가 싶었다. 하지만 매우 간단한 방법으로 이를 해결할 수 있었다. enumerate()를 사용하는 것이다. enumerate는 '열거하다'라는 뜻으로 리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능을 가진다. 여기서 인덱스 값을 활용하여 두 리스트를 비교할 수 있다.

    a = [1, 2, 3, 4]
    b = [1, 4, 3, 5]
    
    print(a == b)
    
    # 출력
    False

     

     

    for i, ai in enumerate(a):
        print(ai, b[i], ai == b[i])
        
    # 출력
    1 1 True
    2 4 False
    3 3 True
    4 5 False
    # enumerate 사용
    diff = [ai == b[i] for i, ai in enumerate(a)]
    print(diff)
    
    # 출력
    [True, False, True, False]

     

      처음엔 머리가 굳어버린 건지 대체 이게 어떻게 비교가 되는 거지 하고 이해가 안돼서 계속해서 코드를 뜯어봤다. 스스로 너무 어렵게 이해하려고 했던것인지 이해하고 나니 생각보다 간단한 형식에 놀랐다. 파이썬은 정말 직관적이구나 싶었던 부분이었다. 또한 인덱스를 다양하게 활용할 수 있다는 것을 알게 된 순간이었다.

     

     

     

    * 위의 방법 외에도 zip() 을 이용하여 비교하는 방법이 있다. (자료형의 값의 개수가 동일할 때 사용된다)

    # zip 사용
    diff = [ai == bi for ai, bi in zip(a, b)]
    print(diff)
    
    # 출력
    [True, False, True, False]
    for ai, bi in zip(a, b):
        print(ai, bi, ai == bi)
    
    # 출력
    1 1 True
    2 4 False
    3 3 True
    4 5 False

    'TIL(Today I Learned)' 카테고리의 다른 글

    3월 23일 TIL -try, except문  (0) 2023.03.23
    3월 22일 TIL- 클래스 객체 생성 및 __init__매소드  (0) 2023.03.22
    3월 20일 TIL - 왜 파이썬인가?  (0) 2023.03.20
    3월 17일 TIL  (0) 2023.03.17
    3월 15일 TIL - CSS 기초  (0) 2023.03.15

    댓글

Designed by Tistory.