본문으로 바로가기

4. 리스트

리스트에는 여러 개의 데이터를 저장할 수 있습니다. 

C언어에 배열과 달리 다른 타입의 데이터를 저장할 수 있다는 것이 장점입니다.

 

리스트는 대괄호([])로 선언하며, 각 항목은 콤마(,)로 구분합니다.

fruits = ['apple', 'banana', 'pineapple']

print(fruits)

>> 실행결과

['apple', 'banana', 'pineapple']

 

파이썬에서 리스트를 출력하면 대괄호를 포함한 리스트 표현을 출력합니다.

 

4.1 리스트 항목 접근

리스트는 순서가 있는 자료형입니다.

따라서 접근하고자 하는 위치를 지정해서 접근할 수 있습니다.

다음과 같은 형태로 리스트에 접근할 수 있습니다.

                    "리스트이름[인덱스]"

인덱스는 접근하고자 하는 위치 번호를 의미합니다.

fruits = ['apple', 'banana', 'pineapple']

print(fruits[0])

>> 실행결과

apple

 

위 코드를 보시면 print() 안에서 fruits[0]을 사용하였더니 apple이 출력되었습니다.

파이썬을 포함한 대부분의 프로그래밍 언어는 0에서 시작합니다.

그렇기 때문에 fruits[0]이 apple을 나타내는 것입니다.

 

파이썬에서는 음수를 사용하여 리스트 항목에 접근할 수 있습니다.

다른 언어에서는 리스트 마지막 항목에 접근하기 위해서는 리스트에 길이를 구한 후 접근해야 합니다.

하지만, 파이썬에서는 인덱스로 -1을 사용하면 마지막 항목에 접근이 가능합니다.

fruits = ['apple', 'banana', 'pineapple']

print(fruits[0])
print(fruits[1])
print(fruits[2])
print(fruits[-1])
print(fruits[-2])

>> 실행결과

apple
banana
pineapple
pineapple
banana

 

4.2 항목 수정

리스트에 저장되어 있는 값은 언제든지 변경할 수 있습니다.

fruits = ['apple', 'banana', 'pineapple']

print(fruits[2])
fruits[2] = 'kiwi'
print(fruits[2])

>> 실행결과

pineapple
kiwi

 

4.3 항목 추가 - append(), insert()

append()나 insert()를 사용하면 리스트에 항목을 추가할 수 있습니다.

append()는 리스트 마지막에 이어 붙입니다.

insert()는 원하는 위치에 추가할 수 있습니다.

4.3.1 append()

fruits = ['apple', 'banana', 'kiwi'] 
print(fruits) 

# 리스트이름.append(값)
fruits.append('grape') 
print(fruits)

>> 실행결과

['apple', 'banana', 'kiwi']
['apple', 'banana', 'kiwi', 'grape']

 

4.3.2 insert()

fruits = ['apple', 'banana', 'kiwi']
print(fruits)

# 리스트이름.insert(인덱스, 값)
fruits.insert(1, 'orange')
print(fruits)

>> 실행결과

['apple', 'banana', 'kiwi']
['apple', 'orange', 'banana', 'kiwi']

 

4.4 항목 제거 - del, pop(), remove()

제거하고자 하는 데이터의 위치를 알고 있으면 del, pop()을,

위치를 모를 경우에는 remove()를 사용하면 됩니다.

del와 pop()의 차이점은 del은 데이터를 반환하지 않고 삭제하고,

pop()은 데이터를 반환하고 삭제합니다.

삭제할 데이터를 확인해야 하면 pop()을 사용하면 되는 것입니다.

 

4.4.1 del

fruits = ['apple', 'banana', 'kiwi', 'orange', 'grape']
print(fruits)

# del 리스트이름[인덱스]
del fruits[1]
print(fruits)

>> 실행결과

['apple', 'banana', 'kiwi', 'orange', 'grape']
['apple', 'kiwi', 'orange', 'grape']

 

4.4.2 pop()

fruits = ['apple', 'banana', 'kiwi', 'orange', 'grape']
print(fruits)

# 리스트이름.pop(인덱스)
poped_fruit = fruits.pop(0)
print("\n삭제한 과일 : ", poped_fruit)
print(fruits)

# 인덱스 생략 시 마지막 항목 반환
poped_fruit = fruits.pop()
print("\n삭제한 과일 : ", poped_fruit)
print(fruits)

>> 실행결과

['apple', 'banana', 'kiwi', 'orange', 'grape']

삭제한 과일 :  apple
['banana', 'kiwi', 'orange', 'grape']

삭제한 과일 :  grape
['banana', 'kiwi', 'orange']

 

4.4.3 remove()

fruits = ['apple', 'banana', 'kiwi', 'orange', 'grape']
print(fruits)

# 리스트이름.remove(값)
fruits.remove('kiwi')
print(fruits)

>> 실행결과

['apple', 'banana', 'kiwi', 'orange', 'grape']
['apple', 'banana', 'orange', 'grape']

 

만약 리스트에 같은 값이 여러 개가 있다면 remove()는 첫 번째 항목만 제거합니다.

number = [1, 2, 3, 4, 5, 2, 2]
print(number)

number.remove(2)
print(number)

>> 실행결과

[1, 2, 3, 4, 5, 2, 2]
[1, 3, 4, 5, 2, 2]

 

4.5 정렬 - sort(), sorted(), reverse()

sort()와 sorted()는 리스트를 오름차순 혹은 내림차순으로 정렬해줍니다.

reverse()는 리스트를 역순으로 정렬해줍니다.

sort()는 원본 리스트를 정렬하여 변경하지만,

sorted()는 원본 리스트를 변경하지 않고 정렬한 값만을 반환합니다.

 

4.5.1 sort()

sort() 함수는 기본적으로 오름차순으로 정렬합니다.

fruits = ['banana', 'apple', 'kiwi', 'orange', 'grape']
print(fruits)

fruits.sort()
print(fruits)

>> 실행결과

['banana', 'apple', 'kiwi', 'orange', 'grape']
['apple', 'banana', 'grape', 'kiwi', 'orange']

 

매개변수로 reverse=True를 전달하면 내림차순으로 정렬합니다.

fruits = ['banana', 'apple', 'kiwi', 'orange', 'grape']
print(fruits)

fruits.sort(reverse=True)
print(fruits)

>> 실행결과

['banana', 'apple', 'kiwi', 'orange', 'grape']
['orange', 'kiwi', 'grape', 'banana', 'apple']

 

4.5.2 sorted()

sorted() 함수를 사용하면 리스트의 실제 순서는 바뀌지 않습니다.

sorted() 함수도 기본적으로 오름차순으로 정렬합니다.

fruits = ['banana', 'apple', 'kiwi', 'orange', 'grape']
print(fruits)

sorted_fruits = sorted(fruits)
print(sorted_fruits)
print(fruits)

>> 실행결과

['banana', 'apple', 'kiwi', 'orange', 'grape']
['apple', 'banana', 'grape', 'kiwi', 'orange']
['banana', 'apple', 'kiwi', 'orange', 'grape']

 

매개변수로 reverse=True를 전달하면 내림차순으로 정렬합니다.

fruits = ['banana', 'apple', 'kiwi', 'orange', 'grape']
print(fruits)

sorted_fruits = sorted(fruits, reverse=True)
print(sorted_fruits)

>> 실행결과

['banana', 'apple', 'kiwi', 'orange', 'grape']
['orange', 'kiwi', 'grape', 'banana', 'apple']

 

4.5.3 reverse()

reverse() 함수는 리스트를 역순으로 바꿀 때 사용합니다.

fruits = ['banana', 'apple', 'kiwi', 'orange', 'grape']
print(fruits)

fruits.reverse()
print(fruits)

>> 실행결과

['banana', 'apple', 'kiwi', 'orange', 'grape']
['grape', 'orange', 'kiwi', 'apple', 'banana']

 

4.6 리스트 길이 - len()

len() 함수로 리스트 길이를 구할 수 있습니다.

fruits = ['banana', 'apple', 'kiwi', 'orange', 'grape']
print(len(fruits))

>> 실행결과

5