컴퓨터/Python

Python (5) - 리스트(List)

달서비 2021. 7. 23. 01:51

제가 예전에 블로그에서 파이썬의 배열이라고 올렸던 적이 있습니다. (현재는 비공개 처리함) 하지만 파이썬은 자체 기능에서는 배열이 없습니다. 배열을 사용하기 위해서는 Numpy라는 라이브러리를 활용하여 작성하여야 합니다. 간단하게 배열과 리스트의 차이를 설명하고 리스트에 대하여 설명하려고 합니다.

서점에 있는 책들 - 픽사베이

 

배열? 리스트?

배열(좌) , 리스트(우)

배열과 리스트는 사용 방법에서는 비슷하지만 메모리를 다루는 방식에서 커다란 차이가 있습니다. 두 가지다 많이 쓰는 자료형입니다. 아래에 특징을 정리해보았습니다

 

배열의 특징

  • 같은 특성을 가지며 일정한 규칙에 따라 나열되어 있는 데이터들의 집합
  • 연속된 메모리 구조를 가진다 (검색하기 용이함)
  • 다른 자료구조를 표현하기 위해 구성하는 기본적인 자료구조 (파이썬에서는 배열이 없으나 다른 언어에서는 핵심)

 

리스트의 특징

  • 데이터의 위치가 저장되어있는 집합
  • 메모리가 있는 위치가 불연속적이다
  • 포인터를 이용하여 접속한다 (한 번에 이어져 있지 않아 메모리 관리가 편하다) (C언어 기준)

 

각각이 유리할때

배열의 경우에는 추가 삭제가 적고 검색을 필요로 할 때 유리하고

리스트는 데이터의 크기가 정해져 있지 않고 삽입 및 삭제가 많은 경우, 그리고 검색이 적은 경우 유리합니다.

(배열에 비해 검색할 때 과정이 복잡함)

 

기본적인 리스트 사용법

리스트 사용 예제

EX1 리스트 선언하기

#EX1 : 리스트 선언하기

numArray = [5,4,3,2,1]
#1,2,3,4,5라는 값을 가지고 있는 리스트를 선언함
## 선언후 수정가능하다

stringArray = ['I','am','Groot']
#문자열 리스트도 가능하다

blankArray = []
#비어있는 리스트도 가능

D2 = [[10,20],[30,40],[50,60]]
#이렇게 2차원 리스트도 제작할 수 있다.

 

EX2 - 리스트와 input

#EX2 - 리스트와 input

#리스트 선언
numArray = [10,20,30,40,50]

#원하는 리스트의 데이터는 어디에 있는지 input()으로 받는다
temp = int(input('numArray 배열을 숫자를 선택하세요 : '))

#데이터 출력
print('%d' % numArray[temp])

# 배열은 0부터 시작
# temp가 0 인경우 10을 출력
# temp가 1 인경우 20을 출력
# temp가 2 인경우 30을 출력
# temp가 3 인경우 40을 출력
# temp가 4 인경우 50을 출력

 

EX3 - 리스트 수정하기

#EX3 - 리스트 수정하기

#리스트 선언
numArray = [10,20,30,40,50]

#numArray[1]의 값을 20->200으로 수정
numArray[1] = 200

print(numArray)
# [10, 200, 30, 40, 50] 출력

 

파이썬으로 알아두면 좋은 리스트 메소드

추가 name.append(obj)
정렬 name.sort()
정렬(reverse) name.reverse()
제거 name.remove(obj)

 

EX4 - 메소드 사용 예제

# EX4 - 메소드 사용 예제
# 배열 안에 있는 변수의 값은 print(numArray)으로 볼수 있습니다.

numArray = [10,20,30,40,50]
# [10, 20, 30, 40, 50]

numArray.append(25)
# [10, 20, 30, 40, 50, 25]

numArray.sort()
# [10, 20, 25, 30, 40, 50]

numArray.remove(20)
# [10, 25, 30, 40, 50]

numArray.reverse()
# [50, 40, 30, 25, 10]

numArray.append(100)
# [50, 40, 30, 25, 10, 100]