[9장] 리스트 - II
이번 시간에는 지난 시간에 학습한 리스트와 관련한 함수들을 살펴봅니다. 앞으로 살펴볼 함수들은 프로그램에서 리스트를 다루는데 아주 유용한 함수들입니다. 따라서 많이 연습해서 익숙해지도록 합니다.
[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)에 대해서 살펴보겠습니다.