Python 리스트에 요소 추가, 결합, 삭제

python post logo 파이썬

이 글의 소스 샘플은 [Google Colab에서 Python 코드 실행하기] 글에서 언급한 환경을 이용하면 Python 프로그램을 PC에 설치하지 않더라도 Chrome, IE, Edge의 Browser에서 쉽게 Python프로그램을 실행하고 따라할 수 있습니다.

리스트란?

어떤 형태의(정수, 부동소수점, 문자열 등)의 데이터를 저장할 수 있는 데이터 구조입니다. 각 요소에 순서가 있으며 인덱스를 이용하여 각 요소를 지정할 수 있습니다. 리스트의 요소는 자유롭게 수정할 수 있으며 다른 프로그래밍 언어에서의 ‘배열’과 비슷한 방법으로 사용합니다.

자세한 내용은 아래 글을 참조하세요.

Python 리스트의 기본
이 글의 소스 샘플은 글에서 언급한 환경을 이용하면 Python 프로그램을 PC에 설치하지 않더라도 Chrome, IE, Edge의 Browser에서 쉽게 Python프로그램을 실행하고 따라할 수 있습니다. 리스트의...

리스트 요소 추가하기

한 번 작성한 리스트에 요소를 추가할 수도 있습니다. 주로 append라는 메소드를 사용합니다. 메소드는 함수와 마찬가지로 인수를 받고 조작 대상(이 경우는 리스트)에 대해 어떠한 처리를 실행합니다. 메소드를 실행하려면 아래와 같은 형태로 호출합니다.

조작대상명.메소드명(인수)

가장 끝에 요소를 추가하는 메소드 append

함수 append()로 리스트의 마지막에 요소를 추가할 수 있습니다.

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

실행 결과는 다음과 같습니다.

[1, 2, 3, 4, 5]

1부터 5까지의 정수 요소를 가진 리스트 exlist1에 요소 6을 추가해보려고 합니다.

exlist1.append(6)
print(exlist1)

실행 결과는 다음과 같습니다.

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

기존 요소들의 가장 뒤에 6이 추가된 것을 확인할 수 있습니다. 다음과 같이 문자열 또한 추가할 수 있습니다.

exlist1.append('word')
print(exlist1)

실행 결과는 다음과 같습니다.

[1, 2, 3, 4, 5, 6, 'word']

리스트 안에 리스트를 추가할 수도 있습니다.

exlist1.append([7, 8, 'word1'])
print(exlist1)

실행 결과는 다음과 같습니다.

[1, 2, 3, 4, 5, 6, 'word', [7, 8], [7, 8, 'word1']]

지정위치에 요소를 추가하는 메소드 insert

append는 가장 마지막 위치에 요소를 추가하는 메소드였지만, 원하는 위치에 요소를 추가하는 insert 메소드 또한 존재합니다. 아래의 예시를 통해 알아보겠습니다.

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

실행 결과는 다음과 같습니다.

[1, 2, 3, 4, 5]

리스트 exlist2의 가장 첫번째 자리에 10이라는 요소를 집어넣는 예시입니다. insert 메소드의 첫번째 인수로 인덱스를, 두번째 인수로 추가할 요소 값을 지정합니다.

exlist2.insert(0, 10)
print(exlist2)

실행 결과는 다음과 같습니다.

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

기존 첫번째 요소였던 1의 앞에 10이 추가된 것을 확인할 수 있습니다. 인덱스에 마이너스 값을 넣으면 순서는 뒤에서부터 카운트됩니다.

exlist2.insert(-1, 20)
print(exlist2)

실행 결과는 다음과 같습니다.

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

뒤에서부터 두번째 위치에 20이 추가된 것을 확인할 수 있습니다.

리스트 요소 결합하기

복수의 요소를 한 번에 추가하고 싶을 때는, ‘+’연산자를 사용해 리스트를 결합할 수 있습니다. +연산자에 의한 리스트 결합은 ‘리스트+리스트’의 형식을 취합니다. 위의 예시에서 사용한 exlist2와 새로운 리스트를 결합합니다.

리스트와 리스트를 결합하는 ‘+’연산자

exlist3 = exlist2 + [6, 7, 8]
print(exlist3)

실행 결과는 다음과 같습니다.

[10, 1, 2, 3, 4, 20, 5, 6, 7, 8]

exlist2의 요소 [10, 1, 2, 3, 4, 20, 5] 의 뒤에 [6, 7, 8]이 추가된 것을 확인할 수 있습니다. 간단하게 아래와 같은 형식으로도 결합할 수 있습니다.

exlist3 += ['a', 'b', 'c']
print(exlist3)

실행 결과는 다음과 같습니다.

[10, 1, 2, 3, 4, 20, 5, 6, 7, 8, 'a', 'b', 'c']

끝에 다른 리스트나 튜플을 결합하는 메소드 extend()

메소드 extend()를 이용해서 리스트나 튜플을 결합 할 수도 있습니다. 

exlist4 = [9, 8, 7, 6, 5]
exlist4.extend([10, 11, 12])
print(exlist4)

실행 결과는 다음과 같습니다.

[9, 8, 7, 6, 5, 10, 11, 12]

exlist4의 요소 9, 8, 7, 6, 5의 뒤에 10, 11, 12가 결합된 것을 확인 할 수 있습니다.

리스트 요소 삭제하기

리스트에서 요소를 삭제하기 위해서 주로 del문을 사용합니다.

요소를 삭제하는 예약어 del

del문은 삭제할 요소의 인덱스를 지정합니다. 인덱스 4, 즉 다섯번째 요소인 5를 삭제하는 예문입니다.

exlist5=[9, 8, 7, 6, 5]
del exlist5[4]
print(exlist5)

실행 결과는 다음과 같습니다.

[9, 8, 7, 6]

5가 삭제된 것을 확인할 수 있습니다.

또한, del문은 리스트의 요소를 삭제할 뿐만 아니라, 리스트 자체를 삭제할 수도 있습니다.

print(exlist5)
del exlist5
print(exlist5)

실행 결과는 다음과 같습니다.

[9, 8, 7, 6]
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-9-be5d11bde43e> in <module>()
      1 print(exlist5)
      2 del exlist5
----> 3 print(exlist5)

NameError: name 'exlist5' is not defined

exlist4라는 리스트명이 삭제되며 오브젝트와의 연결을 해제했기 때문에 NameError가 발생하는 것을 확인할 수 있습니다.

요소를 삭제하는 메소드 remove

인수에는 삭제하고자 하는 요소의 값을 지정하는 remove 메소드를 사용하여 요소를 삭제할 수도 있습니다.

exlist5=[9, 8, 7, 6, 5]
exlist5.remove(8)
print(exlist5)

실행 결과는 다음과 같습니다.

[9, 7, 6, 5]

del문에서는 인덱스를 지정했지만 remove 메소드는 실제로 삭제하려고 하는 요소의 값을 직접 지정합니다. 참고로, 리스트에 같은 값이 2개 이상 있을 때에는 인덱스 값이 작은 요소가 삭제됩니다.

exlist6=['a', 'b', 'c', 'a', 'd', 'a']
exlist6.remove('a')
print(exlist6)

실행 결과는 다음과 같습니다.

['b', 'c', 'a', 'd', 'a']

‘a’라는 요소를 3개 가지고 있는 리스트에서 ‘a’를 remove 메소드로 삭제해본 결과, 가장 첫번째 요소인 ‘a'(인덱스 번호가 0)가 삭제되고 다른 2개의 ‘a’는 삭제되지 않은 것을 확인할 수 있습니다.

특정 요소를 삭제하는 메소드 pop

pop메소드를 이용하면 지정한 인덱스의 요소를 삭제하고, 삭제된 요소 값이 반환값으로써 출력됩니다.

exlist7 = [1,2,3,4,5]
print(exlist7)
exlist7.pop(3)

실행 결과는 다음과 같습니다.

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

인덱스 3에 들어있는 요소 4가 삭제되고, 4가 반환된 것을 확인할 수 있습니다.

모든 요소를 삭제하는 메소드 clear

리스트의 모든 요소를 삭제하는 메소드입니다. 파라미터를 필요로 하지 않으며 반환값 또한 없습니다. 단, 리스트는 내부에 요소가 없는 상태로도 존재할 수 있으므로 리스트 삭제와는 다르다는 점에서 주의가 필요합니다.

exlist7.clear()
print(exlist7)

실행 결과는 다음과 같습니다.

[]

제목과 URL을 복사했습니다