본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬 기초] 리스트 자료형② - 연산자, 수정, 삭제(del)

by 석세상 2022. 5. 10.
반응형

리스트에서 연산자를 사용했을 때 결과, 수정 및 변경, 삭제는 어떻게 하는지에 대해서 알아보고, 몇 가지 함수의 사용법에 대해 알아보자.

 

 

1. 리스트 연산자 사용

리스트에 는 더하기 연산자와 곱하기 연산자를 사용할 수 있는데 더하기 연산자를 사용하는 경우는 두 리스트를 합치는 기능을 하게 되고, 곱하기의 경우는 반복 생성하게 된다. 아래 예시를 보면서 눈에 익혀보자. 참고로 리스트는 대괄호 안에 들어간다는 것을 기억하자.

a = [1, 2, 3]
b = [4, 5, 6]

(1번 예제) 더하기 연산자 사용, 두 개의 리스트가 하나의 리스트로 합쳐진 것을 볼 수 있다.
[입력값]
a + b

[출력결과]
[1, 2, 3, 4, 5, 6]

(2번 예제) 곱하기 연산자 사용, a의 값이 3번 반복해서 나오는 것을 볼 수 있다.
[입력값]
a * 3

[출력결과]
[1, 2, 3, 1, 2, 3, 1, 2, 3]

 

2. 리스트 수정/변경, 삭제

리스트의 수정/변경, 삭제는 한 번에 보는 게 알아보는 게 쉽기 때문에 쭉 이어서 보도록 하자. 리스트에서 하나의 값을 수정하는 것은 인덱싱의 개념을 생각하면 쉽고, 여러 요소를 한 번에 변경하려면 슬라이싱의 개념을 이용해야 한다.

 

또 리스트의 특성이 문자와 숫자를 혼합해서도 담을 수 있다는 것을 알아두어야 한다. 문자와 숫자를 한 번에 담는 게 대수롭지 않게 생각할 수 있지만 과거에 분석이나 IT 쪽에 있던 분들에게는 이게 얼마나 큰 특성인지 알 것이다.

 

삭제의 경우는 []를 사용해서 삭제가 가능하며, del이라는 명령문으로도 삭제할 수 있다.

a = [1, 2, 3]

(1번 예제) 하나의 값만 수정하기, 파이썬은 0부터 순서를 세므로 a[2]인 세번째 값인 3이 4로 변경됨
[입력값]
a[2] = 4
a

[출력결과]
[1, 2, 4]


(2번 예제) 여러값 수정하기, [1:2]로 슬라이싱을 하면 맨 마지막 순서는 제외하기 때문에 두번째 값인 2가 'a','b','c'로 변경
[입력값]
a[1:2] = ['a', 'b', 'c']
a

[출력결과]
[1, 'a', 'b', 'c', 4]

(3번 예제) []를 이용해서 삭제할 수 있는데, [1:3]를 의미하는 두번째, 세번째 값인 'a','b'를 삭제
[입력값]
a[1:3] = []
a

[출력결과]
[1, 'c', 4]

(4번 예제) del을 이용해서 삭제, 두번째 값인 'c'가 삭제
[입력값]
del a[1]
a

[출력결과]
[1, 4]

 

 

※ 리스트 수정 시 살펴봐야 하는 것

앞에서 수정 시 a[1:2]를 썼다. 결국 두 번째 값을 변경했다는 건데, 그렇다면 a[1]을 써도 같은 결과가 나오지 않을까라고 생각할 수 있다. 하지만 결과는 전혀 다르게 나타난다. 이렇게 머릿속에서 생각하는 것과 실제 결과가 다르게 나타날 수 있으니 항상 결과 확인하는 습관이 필요하다. 그러면 아래 예제를 보면서 어떻게 다른지에 대해서 알아보자.

 

(1번 예제)를 보면 슬라이싱 형태로 수정하였는데 a[1:2]는 1에서 2 사이에 있는, 정확히는 두 번째와 세 번째 전까지 있는 리스트의 값을 변경하라는 의미로 두 번째 있는 리스트 값인 2를, a, b, c로 변경하였다.

 

하지만 (2번 예제)를 보면 두 번째 요소를 다음과 같은 리스트로 변경하라는 의미가 된다. 따라서 두 번째에 있는 2 대신 두 번째 요소로 ['a', 'b', 'c']라는 리스트가 들어가 있는 것을 볼 수 있다.  

(1번 예제) a[1:2]를 사용한 경우
[입력값]
a = [1, 2, 3]
a[1:2] = ['a','b','c']

[출력결과]
[1, 'a', 'b', 'c', 3]


(2번 예제) a[1]을 사용한 경우
[입력값]
a = [1, 2, 3]
a[1] = ['a','b','c']

[출력결과]
[1, ['a', 'b', 'c'], 3]


 

지금은 단편적인 문법에 대해서만 배우고 있어서 금방 눈에 보이고 수정할 수 있지만 나중에 복잡한 코딩을 하는 경우 눈에 잘 보이지 않아 찾아내는데 오랜 시간이 걸리기도 한다. 그래서 이런 작은 차이를 알고 있느냐 모르냐에 따라서 결과에 엄청난 영향을 미칠 수 있고 향후에는 코딩한 것에 대한 검토 시 훨씬 시간을 단축할 수 있다.

 

728x90
반응형

댓글