2023. 2. 9. 18:59ㆍ코딩/파이썬
파이썬에서는 데이터를 효율적으로 처리할 수 있는 자료형과 모듈을 제공하고 있다. list, pandas, dictionary 등이다.
이번 편에서는 리스트를 살펴보자.
리스트란?
C언어에서의 1차원 배열과 같이 하나의 객체에 열 형태로 여러 데이터를 저장하는 자료형이다. 하지만 C언어와 달리 파이썬에서는 int, char같이 자료형을 미리 지정하지 않아도 되기 때문에 더 편리하다.
리스트는 대괄호 안에 각 요소를 쉼표로 구분하여 만든다.
a = [1,2,3,4,5]

리스트의 인덱스는 0부터 시작하며, 각 데이터를 출력하기 위해 리스트이름[인덱스]를 사용한다.
참고로 a[-1] 은 가장 마지막 요소 5를 출력한다.
리스트는 모든 자료형을 저장할 수 있기 때문에, 다음과 같은 형태도 모두 가능하다.
def myname():
return 'v3rt'
b = ['a','b','c',['d','e','f','g']]
c = [1,2,{'name':'prOv3rt','level':1},myname()]
b 객체처럼 리스트 안에 리스트를 담을 수도 있고, c객체처럼 dictionary와 특정 자료형을 반환하는 함수의 형태도 저장할 수 있다.

In[103]을 보면 인덱스 3에 저장된 리스트를 그대로 돌려주고 있다.
In[104]에서 b[3]은 ['d', 'e', 'f', 'g']를 의미한다. 그 옆의 [2]는 ['d', 'e', 'f', 'g']의 2번째 요소인 'f'를 의미한다.
그렇다면 'd'를 출력하고 싶다면? b[3][0]과 같이 쓴다.
c의 2번째 인덱스에 있는 자료형은 dictionary라는 것인데, key와 value가 쌍으로 이루어진 자료형이다.
자세한 설명은 다음 포스팅으로 미루고, In[106]과 같이 특정 value를 출력하고 싶다면 dictionary가 저장된 인덱스와 원하는 key를 나열하면 된다.
예제에선 'name'키의 value에 해당하는 'prOv3rt'가 출력되는 것을 볼 수 있다.
In[107]에서 'v3rt'라는 문자열을 반환하는 함수를 리스트에 넣었을 때 리턴된 값을 출력하는 것을 볼 수 있다.
리스트 수정과 삭제
값 수정하기

간단하게 바꾸고자 하는 요소를 인덱싱하고 새로운 값을 넣어주면 된다.
리스트 값 삭제하기

del 리스트[n]은 n번째 값을 삭제한다. del함수는 객체를 삭제하는 파이썬 내장 함수이며 del 객체 와 같이 사용한다.
리스트 슬라이싱
범위를 정해 원하는 부분만 잘라서 출력할 수 있는데, 이를 슬라이싱이라고 한다.
리스트이름[시작범위:끝범위] 와 같이 사용한다. 예제를 보자.
com = ['ryzen','intel','asus','samsung']
com[:1]
com[0:2]


In[118]처럼 시작범위를 비워두면 자동으로 0이 시작범위가 된다. In[120]과 In[118]의 결과가 같음을 볼 수 있다.
출력된 것을 보면 끝범위는 범위에 포함되지 않는 것을 알 수 있다. 즉 com[0:2]는 0번째, 1번째까지의 범위를 의미한다.
중첩 리스트 슬라이싱

['gskill','3rsys','sk'] 리스트를 com리스트에 추가했다.
중첩 리스트 슬라이싱도 같은 방법으로 한다. com[4]는 ['gskill','3rsys','sk'] 를 의미하고, 범위가 2까지니 안에 있는 리스트의 0번째, 1번째 요소까지 범위가 되어 3rsys까지 출력된 것을 볼 수 있다.
리스트 연산
리스트끼리도 연산을 할 수있다.
리스트 더하기(+)
a = [1,2,3]
b = [4,5,6]

+ 연산자는 두 리스트를 합쳐준다.
리스트 반복하기(*)

* 연산자는 리스트를 반복하여 새로운 리스트를 만든다. 물론 a*2+b와 같은 것도 가능하다.
연산 시 주의할 점
정수 3과 문자 'three'를 더하면 오류가 나는 것처럼 리스트 연산에서도 자료형을 맞춰줘야 한다.
다음 예제를 보자.

a와 com 리스트를 합쳐 c라는 새로운 리스트를 만들었다. 이처럼 리스트 간의 +연산자는 단순히 두 리스트를 합치는 것이기 때문에 요소의 자료형이 달라도 괜찮다. 하지만 요소끼리의 자료형은 맞춰줘야 한다.
c[0]은 1인데 1에 문자열 'zero'를 더하니 지원되지 않는 피연산자라며 에러가 뜬다.

이럴 땐 str함수로 정수 1을 문자열로 바꿔 자료형을 맞춰줘야 한다.

c[3]은 'ryzen'으로, 같은 str형끼리는 연산이 잘 된다.
자주 쓰는 리스트 관련 함수

리스트. 을 하면 지원되는 함수 목록이 쭉 나온다.(pycharm 기준)
append( ) - 요소 추가

pycharm에서는 함수를 선언하고 Ctrl + 마우스 왼쪽을 클릭하면 함수의 원형과 설명을 볼 수 있다.
append( )는 리스트의 맨 끝에 요소를 추가한다.

위와 같이 리스트.append(추가할 요소) 형태로 쓴다.
insert( ) - 요소 삽입
insert(n , m)은 n번째 위치에 m을 삽입한다는 뜻이다.

예제에서 첫번째 위치에 10을 삽입한다 했으니 2앞에 10이 삽입되었다.
sort( ) - 정렬
오름차순

sort( )는 리스트 요소를 순차적으로 정렬한다.

문자도 a부터 순서대로 정렬해준다.
내림차순
내림차순 정렬은 reverse( ) 함수를 이용한다. reverse( )는 리스트를 뒤집어주는 함수다.


reverse=True는 내림차순을 의미한다.
조건을 지정하여 정렬
sort( )의 key 옵션을 사용하여 정렬 조건을 지정할 수 있다. 사용법은 다음과 같다.
sort(key = 조건)

key의 조건을 문자열의 길이로 설정하여 길이가 짧은 순서로 정렬했다.
index( ) - 위치 반환

하지만 같은 값의 요소가 있는 경우, index는 첫번째 요소의 위치만 반환한다. 같은 값을 가진 모든 요소의 위치를 반환하려면 다른 방법을 써야 한다. (추후 정리)

count( ) - 특정 요소의 개수 세기
count(m)은 리스트 안에 m값의 개수를 반환하는 함수다.

remove( ) - 리스트 요소 제거
remove(m)은 리스트에서 m을 삭제한다. 중복된 값이 있을 경우, 첫 번째 값만 삭제한다.

pop( ) - 리스트에서 요소 반환 후 삭제
pop( )함수로도 요소를 제거할 수 있다. remove( )나 del과 다른 점은 제거할 요소를 반환한 후 삭제하는 것이다.

c.pop( )은 리스트의 맨 마지막 요소를 반환하고 삭제한다. c의 맨 마지막 요소인 1이 반환된 후 삭제된 것을 볼 수 있다.

c.pop(n)은 리스트에서 n번째 요소를 반환하고 삭제한다.
c의 1번째 요소인 3이 반환되고 이후 3이 삭제된 것을 확인할 수 있다.
clear( ) - 리스트 삭제
clear( ) 함수는 리스트의 모든 요소를 삭제한다. 이후 리스트 객체를 보면 빈 리스트가 반환된다.

'코딩 > 파이썬' 카테고리의 다른 글
파이썬 데이터프레임(Dataframe) (0) | 2023.02.09 |
---|---|
딕셔너리(Dictionary) (0) | 2023.02.09 |
모듈(Module) (0) | 2023.02.09 |
사용차 입출력 (0) | 2023.02.09 |
객체와 변수 (0) | 2023.02.09 |