◎ 두 리스트가 같은지 비교하는 방법
두 리스트의 원소의 값과 순서가 모두 일치하는지 확인하기 위해서는 ==와 != 연산자를 사용할 수 있다. == 연산자를 사용하게 되면 두 리스트의 원소의 값과 순서가 모두 일치해야지 True가 반환되고 그렇지 않다면 모두 False가 반환된다. != 연산자의 반환값은 == 연산자와 반대이다.
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
list3 = [5, 4, 3, 2, 1]
print("1. == 연산자")
print("list1 == list2 : ", list1 == list2) # 값, 순서 모두 일치하므로 True
print("list2 == list3 : ", list2 == list3) # 순서 불일치 하므로 False
print()
print("2. != 연산자")
print("list1 != list2 : ", list1 != list2) # 값, 순서 모두 일치하므로 False
print("list2 != list3 : ", list2 != list3) # 순서 불일치 하므로 True
* 응용) 정렬되지 않은 두 리스트가 있을 때 서로 같은 리스트인지 아닌지 확인하는 문제
우선 두 리스트는 정렬되지 않았으므로 sorted() 함수가 필요하다. sorted() 함수를 통해 정렬된 리스트에 비교 연산자를 사용해보면 문제의 답을 구할 수 있다.
list1 = [1, 3, 2, 4, 5]
list2 = [5, 2, 4, 1, 3]
print("정렬 x : ", list1 == list2) # 정렬되지 않았으므로(순서가 다르므로) False
print("정렬 o : ", sorted(list1) == sorted(list2)) # 정렬됐으므로 True
◎ 두 리스트의 대소관계를 비교하는 방법
두 리스트의 대소관계를 비교하기 위해서는 비교 연산자 >, <, >=, <=를 사용하면 된다. 단, 주의할 점이 한 가지 있다. 이 방법을 사용하여 리스트를 비교하게 되면 리스트의 맨 앞쪽 원소부터 비교를 진행하게 된다. 따라서 만약 1에서 5까지의 값을 가지는 두 리스트가 있다고 할 때 하나의 리스트는 1로 시작하고 다른 하나는 5로 시작한다면 이는 두번째 리스트가 더 크다는 결과를 반환하게 된다.
list1 = [1, 2, 3, 4, 5]
list2 = [5, 4, 3, 2, 1]
print("list1 > list2 : ", list1 > list2) # 1 < 5이므로 False
print("list1 < list2 : ", list1 < list2) # 1 < 5이므로 True
따라서 리스트의 원소를 먼저 정렬을 하는 선행 과정이 필요하다. 마찬가지로 sorted() 함수를 사용해서 정렬한 결과를 기준으로 비교하면 된다.
list1 = [1, 2, 3, 4, 5]
list2 = [5, 4, 3, 2, 1]
print("list1 > list2 : ", sorted(list1) > sorted(list2)) # 정렬된 두 리스트는 동일한 리스트이므로
print("list1 < list2 : ", sorted(list1) < sorted(list2)) # 둘다 False가 반환된다.
print()
print("list1 >= list2 : ", sorted(list1) >= sorted(list2)) # 두 리스트는 동일한 리스트이므로
print("list1 <= list2 : ", sorted(list1) <= sorted(list2)) # 둘다 True가 반환된다.
* 주의) 두 리스트 [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 0]이 있다고 할 때 5번째 원소까지는 동일하지만 두 번째 리스트의 원소 개수가 1개 더 많으므로 두 번째 리스트가 더 큰 리스트가 된다.
위와 같이 두 리스트는 5번째 원소까지는 값이 모두 동일한 리스트이다. 그러나 두 번째 리스트의 원소 개수가 1개 더 많으므로 두 리스트를 비교하게 되면 두 번째 리스트가 더 큰 리스트가 되는 것이다.
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5, 0]
print("list1 > list2 : ", list1 > list2) # list1의 원소 개수가 list2의 원소 개수보다 작으므로 False
print("list1 < list2 : ", list1 < list2) # list2의 원소 개수가 list1의 원소 개수보다 크므로 True