Coding/Jump to Python

Python - List 자료형 / 연산 / 인덱싱 / 슬라이싱 / 수정 및 삭제 / 리스트 관련 함수

빈그레 2023. 9. 7. 23:34

 

 


02-3 리스트 자료형

 

 

 

 

리스트 종류

 

 

리스트는 비어있을 수도 있고, 숫자,문자,문자열 등을 요소값으로 가질 수 있으며 심지어는 리스트 안에 또 다른 리스트를 요소로 가지고 있을 수 있다. (리스트 여러겹 가능) 리스트의 가장 큰 장점은 data type의 구분이 필요하지 않다는 것이다.

 

 

 

리스트 연산 (문자열과 동일)

 

- 리스트 더하기

리스트를 +기호로 연산하면 두 리스트가 하나의 리스트로 합쳐져 출력된다.

 

 

- 리스트 반복

리스트에 상수를 곱하면 곱한 상수만큼 리스트가 반복하며 붙여져 새로운 리스트가 출력된다.

 

 

 

- 리스트와 문자열의 연산

 

위와 같이 리스트 속 하나의 값과 문자열을 더하였을 때, 3hi가 나올 것이라 생각할 수 있으나 실제로는 이렇게 입력하면 오류가 뜬다. 정수와 문자열은 서로 data type이 달라 연산이 불가능하다. 

 

따라서 위와같이 상수와 문자열을 연산하고자 한다면 str함수를 이용하여 상수를 문자로 바꾸어줘야한다.

 

str함수는 정수나 실수를 문자열의 형태로 바꾸어주는 파이썬의 내장 함수이다. 따라서 위와 같이 합치고자 하는 상수를 문자열로 바꾸어주면 hi라는 문자열과 함께 연산이 가능해진다.

 

 

 

리스트 길이 구하기 (문자열과 동일)

 

len 함수를 사용하면 list가 몇 개의 요소를 갖고 있는지, 즉 list의 길이가 얼만큼인지 알 수 있다.

 

 

 

리스트 인덱싱

 

리스트도 문자열과 같게 순서대로 인덱스를 갖으며 인덱스 값으로 하나씩 뽑아낼 수 있다.

리스트에서도 문자열과 같이 마이너스를 이용하여 역으로 뽑아낼 수 있다.

 

 

위 예시 e와 같이 리스트 안에 있는 리스트 안으로 한 번 더 들어가 값을 끄집어 내려면 index를 두번 붙여주면 된다.

예를들어 위 e에서 'is'를 뽑아내고 싶으면

 

e[-1][1]

 

위와 같이 입력하면 'is'를 뽑아낼 수 있다.

 

 

 

 

리스트 슬라이싱

 

리스트의 모든 슬라이싱 방법은 문자열과 동일하므로 설명을 생략한다. (이전글 참조)

 

 

 

리스트의 수정과 삭제 

 

- 리스트 값 수정

: 바꾸고자 하는 요소의 index를 알면 =를이용해 새로운 값을 쉽게 넣어줄 수있다.

 

- del 함수를 사용하여 리스트 요소 삭제하기

:

del함수를 사용하여 list의 요소를 삭제하면 list에서 그부분은 아예 삭제되어 list의 전체 길이가 짧아진다.

del함수는 위와 같이 index 하나만 삭제할 수도 있지만 [2:] 와 같은 슬라이싱 기법을 사용하여 한 번에 여러 요소를 삭제할 수도 있다.

 

 

리스트 관련 함수

 

- append : 리스트에 요소 추가

 append는 사전적 의미로 덧붙이다,첨부하다 라는 뜻이 있다.

뜻 그대로 리스트에 append함수를 적용시키면 함수의 파라미터로 들어온 값이 리스트에 맨 마지막에 새로운 요소값으로 추가된다.  리스트는 자료형 구분이 없으므로 어떠한 자료형이라도 추가될 수 있다.

파라미터로 리스트를 넣으면, 하나의 리스트로 연장되는 것이 아닌 리스트 내부의 또 다른 요소로서 리스트가 들어간다. 

( 파라미터로 리스트를 넣어 하나의 긴 리스트로 확장시키는 것은 뒤에 'extend'라는 함수를 통해 다룰것이다. )

 

 

- 리스트 정렬 (sort)

리스트에 sort함수를 취해주면 상수와 문자 모두 순서대로 정렬된다.

 

 

- 리스트 뒤집기 (reverse)

리스트 reverse는 역순으로 정렬하는 것이 아니라, 리스트 자체를 그냥 거꾸로 뒤집는 것이다.

 

 

- 위치 반환(index)

index함수를 이용하면 해당 값이 있는 위치를 반환해준다. 하지만, index함수는 존재하지 않는 값에 대해서는 처리할 수 없으므로 error가 난다.

문자열에 쓰이는 find함수는 존재하지 않는 값일 떄 -1을 반환한다고 이 책에서 설명했었으나, list에서는 find합수를 언급하지 않은 것을 보아, 쓰이지 않는 것 같다.

 

 

-리스트에 요소 삽입 (insert)

insert함수의 파라미터에 위치 인덱스, 넣고자 하는 값을 순서대로 넣어주면 그 값이 해당 위치에 삽입된다.

 

 

- 리스트 요소 제거 (remove)

remove함수의 파라미터 자리에 삭제하고자 하는 값을 넣어주면
리스트에서 처음으로 나오는 해당 값이 1개 삭제되며 리스트의 길이가 줄어든다.

del함수와의 차이점은 del함수는 list의 index로 접근하여 삭제하지만
remove는 요소값을 찾으며 접근하여 그 값을 삭제한다.

 

 

- 리스트 요소 꺼내기 (pop)


pop함수는 해당 리스트의 가장 마지막 값을 꺼내며, 리스트에서 그 요소는 삭제된다.
말 그대로 그냥 꺼내버리는 것이다.

 

 

- 리스트에 포함된 요소 x의 개수 세기 (count)

count함수의 파라미터로 들어간 값이 리스트 안에 몇 번 존재하는지를 반환해준다.

 

 

 

- 리스트 확장(extend)

extend는 함수의 파라미터로 리스트 type만 올 수 있다. 
파라미터로 들어온 리스트 값이 본래 리스트와 합쳐져 하나의 긴 리스트가 완성된다.

따라서 이는 리스트의 덧셈과 마찬가지이므로, 아래 두 표현은 동일하다

#확장
a.extend([4.5])

#연산
a+=[4,5]