리스트 비교
비교 연산자 ==, !=, <, >를 사용해서 리스트 두 개를 서로 비교할 수 있다. 리스트를 비교하려면 먼저 두 개의 리스트가 동일한 타입의 요소를 가지고 있어야 한다.
리스트의 비교가 동작하는 방식은 이러하다:
- 먼저 리스트의 첫 번째 요소들을 비교한다.
- 첫 번째 요소에서 True가 나오면 두 번째 요소를 꺼내서 비교한다.
- 리스트 안의 모든 요소가 비교될 때까지 동일한 작업을 반복한다.
- 리스트 안의 모든 요소들을 비교하여 모두 True가 나오면 전체 결과가 True가 되며, 중간에 False가 나오는 비교가 있다면 더 이상의 비교는 없고 전체 결과를 False로 반환하며 비교는 종료된다.
list1 = [1, 2, 3]
list2 = [1, 2, 3]
list1 == list2 # True
list3 = [3, 4, 5]
list4 = [1, 2, 3]
list3 > list4 # True
== 연산자를 이용하여 2개의 리스트를 비교할 때, 리스트의 길이가 다르면 False가 된다.
list1 = [1, 2, 3]
list2 = [1, 2]
list1 == list2 # False
리스트의 최솟값과 최댓값 찾기
리스트의 최솟값과 최댓값을 찾으려면 내장 함수인 min(), max()를 사용하면 된다.
values = [1, 2, 3, 4, 5, 6, 7, 8, 9]
min(values) # 1
max(values) # 9
리스트 정렬하기
파이썬에서 리스트를 정렬하는 방법에는 두 가지가 있다.
리스트 객체의 sort() 메소드
sort() 메소드는 원본 리스트를 변경하여 정렬한다.
values = [4, 2, 5, 6, 9, 1]
values.sort()
print(values) # [1, 2, 4, 5, 6, 9]
sorted() 내장 함수
내장 함수 sorted()는 원본을 유지하고 정렬된 리스트를 새로운 리스트로 반환한다.
values = [4, 2, 5, 6, 9, 1]
sorted_values = sorted(values)
print(sorted_values) # [1, 2, 4, 5, 6, 9]
리스트 정렬 시, 정렬의 기준은 아스키코드 값에 대응하여 판단하기 때문에 대소문자가 섞여 있는 경우는 대문자끼리 먼저 정렬되어 나오고 그 후에 소문자끼리 정렬되어 예상하지 못한 결과가 나올 수도 있다. 대소문자를 가리지 않고 비교하려면 key 매개변수를 str.lower() 함수를 지정하면 된다.
sorted_words = sorted("This is a test string from Andrew".split(), key=str.lower)
print(sorted_words) # ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
또한 리스트 정렬은 기본적으로 오름차순이기 때문에 내림차순 정렬을 하고 싶다면 reverse 매개변수의 값을 True로 설정하면 된다.
sorted = sorted([3, 5, 2, 1, 4], reverse=True)
print(sorted) # [5, 4, 3, 2, 1]
문자열에서 리스트 만들기
문자열의 split() 메소드는 분리자를 인자로 받아서 문자열을 분리하고 이것을 리스트로 변환한다. 인자로 전달 받은 분리자가 없다면 기본적으로 한 칸 공백(" ")을 분리자로 지정하여 분리한다.
string = "A string is a sequence of characters."
string.split() # ['A', 'string', 'is', 'a', 'sequence', 'of', 'characters.']
comma_string = "A, string, is, a, sequence, of, characters."
comma_string.split(", ") # ['A', 'string', 'is', 'a', 'sequence', 'of', 'characters.']
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 리스트와 함수 (값으로 호출 vs 참조로 호출) (0) | 2025.01.16 |
---|---|
[Python] 파이썬 리스트 복사하기 (얕은 복사 vs 깊은 복사) (0) | 2025.01.15 |
[Python] 파이썬 리스트의 기초 연산들 (요소 추가, 삭제, 삽입 등) (0) | 2025.01.15 |
[Python] 파이썬 인덱싱과 슬라이싱 (0) | 2025.01.14 |
[Python] 파이썬 시퀀스 데이터 타입 (0) | 2025.01.14 |