python

[9장] 리스트 - II

hoazzinews 2024. 12. 1. 09:12
반응형

이번 시간에는 지난 시간에 학습한 리스트와 관련한 함수들을 살펴봅니다. 앞으로 살펴볼 함수들은 프로그램에서 리스트를 다루는데 아주 유용한 함수들입니다. 따라서 많이 연습해서 익숙해지도록 합니다.

 

리스트 기본

 

[8장] 리스트 - I

프로그램에서는 데이터를 하나씩 관리하기도 하지만 여러 개의 데이터를 하나로 묶어서 관리하기도 합니다. 예를 들어 학급 학생의 이름을 관리한다고 할 때 학생은 한 명이 아니고 여러

hoazzinews.tistory.com

 

1. index() 함수

특정 아이템의 인덱스 값을 조회하기 위해서 index() 함수를 이용합니다.

alphabet = ['A', 'B', 'C', 'D', 'E']
print(alphabet.index('A'))          # 'A'의 인덱스 값 -> 0
print(alphabet.index('C'))          # 'C'의 인덱스 값 -> 2

위 코드는 alphabet에 리스트 ['A', 'B', 'C', 'D', 'E']가 할당되어 있습니다. 그리고 index() 함수를 이용해서 'A'와 'C'의 인덱스 값을 조회하고 있습니다. 각각의 인덱스 값은 0과 2입니다. 이처럼 index()에 특정 아이템을 넣어주면 아이템의 인덱스 값을 조회할 수 있습니다.

 

만약 조회하려는 아이템이 2개 이상인 경우 가장 처음에 나오는 아이템의 인덱스 값을 조회합니다.

alphabet = ['A', 'B', 'A', 'D', 'A']    # 'A'가 인덱스 0, 2, 4에 존재한다.
print(alphabet.index('A'))              # 'A'의 인덱스 값 -> 0

 

index()를 리스트에서만 사용할 수 있는 것은 아닙니다. 문자열에도 사용할 수 있습니다.

name = 'hong gildong'
print(name.index('n'))          # 'n'의 인덱스 값 -> 2
print(name.index('g'))          # 'g'의 인덱스 값 -> 3

index() 함수를 이용해서 'hong gildong' 문자열에서 'n'은 인덱스 2이고, 'g'는 인덱스 3인 것을 알 수 있습니다.

 

2. append() 함수

append() 함수를 이용하면 리스트에 아이템을 추가할 수 있습니다. 아이템이 추가되면 인덱스도 ‘1’증가하고 새로 추가된 아이템은 리스트 마지막에 위치합니다.

alphabet = ['A', 'B', 'C']
print(alphabet)         # ['A', 'B', 'C']

alphabet.append('D')
print(alphabet)         # 'D'추가 -> ['A', 'B', 'C', 'D']

alphabet.append('E')
print(alphabet)         # 'E'추가 -> ['A', 'B', 'C', 'D', 'E']

alphabet에 append()를 이용해서 'D'와 'E'가 마지막에 추가됐습니다.

 

3.  insert() 함수

append()는 리스트 끝에 아이템을 추가 하지만, insert() 함수를 이용하면 특정 인덱스에 아이템을 삽입할 수 있습니다.

alphabet = ['A', 'B', 'C']
print(alphabet)         # ['A', 'B', 'C']

alphabet.insert(1, 'a')
print(alphabet)         # 인덱스 1에 'a' 추가 -> ['A', 'a', 'B', 'C']

alphabet에 insert()를 이용해서 인덱스 1에 'a'를 추가하고 인덱스 3에 'b'를 추가합니다. 새로운 아이템이 특정 인덱스에 추가되면 추가된 아이템 이후의 아이템들은 인덱스가 1씩 증가합니다.

 

alphabet.insert(alphabet.index('B') + 1, 'b')
print(alphabet)         # 'B'의 인덱스을 찾고, 그 다음자리에 'b'f를 추가 -> ['A', 'a', 'B', 'b', 'C']

 

4. extend() 함수

extend()는 리스트에 다른 리스트를 붙일 때 사용합니다.

lowercase = ['a', 'b', 'c']
uppercase = ['A', 'B', 'C']

lowercase.extend(uppercase)         # lowercase에 uppercase를 붙인다.
print('lowercase: ' + str(lowercase))

lowercase에 extend() 함수를 이용해서 uppercase 리스트를 붙였습니다.

 

5. pop() 함수
pop() 함수를 사용하면 리스트의 마지막 아이템을 삭제할 수 있습니다.

countries = ['korea', 'china', 'japan']
print(countries)            # ['korea', 'china', 'japan']

countries.pop()
print(countries)            # 마지막 아이템('japan')을 삭제한다. -> ['korea', 'china']

countries.pop()
print(countries)            # 마지막 아이템('china')을 삭제한다. ->['korea']

pop() 함수를 이용해서 리스트의 마지막 아이템을 삭제할 수 있습니다.

 

pop()를 이용해서 마지막 아이템을 삭제하면 pop()는 삭제한 아이템을 반환하는데요, 다음 코드는 pop() 반환한 아이템을 popChar 변수에 담았습니다.

countries = ['korea', 'china', 'japan']
print(countries)            # ['korea', 'china', 'japan']

popChar = countries.pop()
print(popChar)              # 삭제한 문자열을 확인한다. -> 'japan'
print(countries)            # 마지막 아이템('japan')을 삭제한다. -> ['korea', 'china']

popChar = countries.pop()
print(popChar)              # 삭제한 문자열을 확인한다. -> 'china'
print(countries)            # 마지막 아이템('china')을 삭제한다. ->['korea']

pop()는 삭제한 데이터를 반환합니다.

 

pop()가 마지막 아이템만 삭제할 수 있는 것은 아닙니다. 특정 인덱스에 해당하는 아이템을 삭제하려면 pop()에 인덱스를 넣어주면 됩니다. 다음은 인덱스 1에 해당하는 아이템을 삭제하는 코드입니다.

countries = ['korea', 'china', 'japan']
countries.pop(1)            # 인덱스 1의 아이템을 삭제한다.
print(countries)            # ['korea', 'japan']

 

6. remove() 함수

remove() 함수를 이용하면 특정 아이템 삭제할 수 있습니다.  remove()에 삭제하려는 아이템을 넣어주면 해당 아이템이 삭제되고 리스트 길이는 1줄어듭니다. 다음은 remove()를 이용해서 특정 아이템을 삭제하는 코드입니다.

countries = ['korea', 'china', 'japan']
print(countries)                # ['korea', 'china', 'japan']

countries.remove('china')       # 'china' 삭제
print(countries)                # ['korea', 'japan']

remove()를 이용해서 'china'를 삭제했습니다.

 

만약 리스트에 동일 아이템이 여러 개 있다면 어떻게 될까요? 이런 경우 가장 앞에 있는 아이템 1개만 삭제됩니다.

countries = ['korea', 'china', 'japan', 'china']
print(countries)                # ['korea', 'china', 'japan', 'china']

countries.remove('china')       # 가장 앞에 있는 'china'만 삭제
print(countries)                # ['korea', 'japan', 'china']

countries 리스트에는 'china'  문자열이 2개 있고, remove('china')에 의해서 인덱스 1에 해당하는 'china'만 삭제됐습니다. 그럼 ' 'china'를 모두 삭제하려면 어떻게 해야 할까요? while문과 in 키워드를 이용하면 됩니다.

countries = ['korea', 'china', 'japan', 'china']
print(countries)                    # ['korea', 'china', 'japan', 'china']

while 'china' in countries:         # countries에 'china' 문자열이 존재한다면, 
    countries.remove('china')       # 'china' 문자열 아이템을 삭제한다.

print(countries)                    # ['korea', 'japan']

'in' 키워드는 countries에 'china'가 있다면 True 그렇지 않다면 False를 반환합니다. 따라서 반복문( while 'china' in countries:)은 countries에 'china' 존재하면 실행문(countries.remove('china'))으로 해당 아이템을 반복 삭제하게 되고, 결과적으로 'china' 문자열은 모두 삭제 됩니다.

 

7. sort() 함수

sort()  함수를 이용하면 아이템을 정렬시킬 수 있으며, reverse 옵션으로 오름차순과 내림차순을 구분할 수 있습니다.

numbers = [3, 2, 0, 4, 1, 5]
print(numbers)                      # [3, 2, 0, 4, 1, 5]

numbers.sort()                      # 오름차순 정렬한다.
print(numbers)                      # [0, 1, 2, 3, 4, 5]

numbers.sort(reverse=True)          # 내림차순 정렬한다.
print(numbers)                      # [5, 4, 3, 2, 1, 0]

sort()를 이용해서 아이템을 오름차순 정렬 합니다. 그리고 reverse 옵션을 True로 설정하면 내림차순 정렬합니다.

 

※ sort()는 'reverse=False'가 생략된 형태입니다. 따라서 sort()와 sort(reverse=False)는 동일한 코드입니다.

 

sort()를 이용하면 문자열도 정렬할 수 있습니다. 다음은 문자열에 대한 정렬을 나타내고 있습니다.

words = ['bca', 'cab','abc']
print(words)                          # ['bca', 'cab', 'abc']

words.sort()                          # 오름차순 정렬한다.
print(words)                          # ['abc', 'bca', 'cab']

words.sort(reverse=True)              # 내림차순 정렬한다.
print(words)                          # ['cab', 'bca', 'abc']
 

sort()를 이용해서 문자열을 아이템으로 가지고 있는 words 리스트를 정렬합니다.

 

8. reverse() 함수

reverse() 함수를 이용하면 아이템을 역순으로 뒤집을 수 있습니다. 다음은 reverse()를 이용해서 아이템 순서를 뒤집는 코드입니다.

words = ['bca', 'cab','abc']
print(words)                          # ['bca', 'cab', 'abc']

words.reverse()                       # 아이템 순서를 뒤집는다.
print(words)                          # ['abc', 'cab', 'bca']

words.reverse()                       # 아이템 순서를 뒤집는다.
print(words)                          # ['bca', 'cab', 'abc']

reverse()를 이용해서 words의 아아템 순서를 뒤집었습니다.

 

 

이번 시간에는 리스트 관련 함수에 대해서 살펴봤습니다. 다음 시간에는 튜플(Tuple)에 대해서 살펴보겠습니다.

 

이전 글: [8장] 리스트 - I

다음 글: [10장] 튜플(Tuple)