리스트(List)

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( )는 리스트를 뒤집어주는 함수다.

b의 마지막 요소가 첫번째 요소가 되었다.

reverse=True는 내림차순을 의미한다.

 

조건을 지정하여 정렬

sort( )의 key 옵션을 사용하여 정렬 조건을 지정할 수 있다. 사용법은 다음과 같다.

sort(key = 조건)

key의 조건을 문자열의 길이로 설정하여 길이가 짧은 순서로 정렬했다.

 

index( ) - 위치 반환

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

1이 0번째, 4번째, 6번째에 있지만 0번째 위치만 반환

count( ) - 특정 요소의 개수 세기

count(m)은 리스트 안에 m값의 개수를 반환하는 함수다.

1이 3개니 3을 반환했다.

remove( ) - 리스트 요소 제거

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

첫번째 1만 삭제되고 4번째, 6번째 1은 삭제되지 않았다.

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