Programming

; develop a program

Back-End/Python

[Python] 자료구조 - List(리스트)

Clloud_ 2022. 9. 18. 13:37
반응형

이번 포스팅에서는 파이썬의 4가지 자료구조 중 하나인 List(리스트)에 대하여 공부를 해보고자 한다.

 


List(리스트)

리스트는 파이썬에서 가장 많이 사용되는 자료구조이고, 값을 순서대로 모아서 관리한다.

 

리스트에는 원소들이 순서대로 저장되며, 0부터 1씩 증가하는 정수의 index를 가진다.

이 index로 조회 및 변경을 할 수 있다.

 

다른 데이터 타입의 값과 중복된 값들을 저장할 수 있고, 원소들을 변경할 수 있다..

 


List 생성

리스트는 대괄호([ ])를 사용하여 생성되며, 리스트 안의 원소(element)들은 쉼표(,)로 구분한다.

ex) [값, 값, 값, ..]

 

예제

순서 1. 리스트를 생성한다. (같은 데이터 타입)

순서 2. 리스트를 생성한다. (다른 데이터 타입)

ages = [20, 30, 33, 35, 52, 42]
talls = [182.5, 173.2, 167.23, 154.2]
names = ['차범근', '박지성', '손흥민']

info = ['id-1', '홍길동', 20, 174.3, 65.3]
info2 = ['id-2', '이순신', 20, 182.5, 72.3]

 

다른 데이터 타입의 값을 가지는 여러 개의 리스트 생성 시, 항상 같은 index 값에는 같은 타입이 들어가야 한다.

info와 info2는 같은 index 값에 같은 타입이 들어갔다.  '0: id, 1: 이름, 2: 나이, 3: 키, 4: 몸무게'

 


List 원소 조회 및 변경

리스트의 원소를 조회하거나 변경할 때에는 인덱싱(indexing)과 슬라이싱(slicing)을 이용한다.

 

인덱싱(indexing)을 이용한 원소 조회 및 변경

list 생성

ages = [20, 30, 33, 35, 52, 42]

 

원소 조회

순서 1. 앞에서 첫 번째 값을 조회한다.

순서 2. 뒤에서 첫 번째 값을 조회한다.

순서 3. 모든 원소들은 두 개의 index를 가지게 된다. (양수, 음수)

print(ages[0])
print(ages[-1])

print(ages[0], ages[-6])

 

[실행 결과]

20
42

20 20

 

원소 변경

ages[0] = 50
ages	# [50, 30, 33, 35, 52, 42]

 

원소 삭제

del ages[1]
ages	# [50, 33, 35, 52, 42]

 

원소 추가

ages.append(100)
ages	# [50, 33, 35, 52, 42, 100]

'='을 사용할 수 있다고 생각할 수 있지만 '='은 값이 있는 index에만 대입할 수 있다.

 

중간 삽입

순서 1. 0 index에 1000을 삽입

순서 2. 2 index에 5000을 삽입

ages.insert(0, 1000)
ages.insert(2, 5000)
ages	# [1000, 50, 5000, 33, 35, 52, 42, 100]

 


슬라이싱(slicing)을 이용한 원소 조회 및 변경

list 생성

l = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

 

원소 조회

순서 1. 시작 idx 1, 마지막 idx는 7이고, 간격은 2인 경우

순서 2. 시작 idx 1, 마지막 idx는 7이고, 간격은 default 값인 경우

순서 3. 시작 idx 생략, 마지막 idx는 7이고, 간격은 default 값인 경우

순서 4. 시작 idx 5, 마지막 idx는 생략되고, 간격은 default 값인 경우

순서 5. 시작 idx 8, 마지막 idx는 2이고, reverse

순서 6. 시작 idx와 마지막 idx는 생략되고, 간격은 -1 인 경우

l[1:7:2]
l[1:7]
l[:5]
l[5:]
l[8:2:-1]
l[::-1]

 

[실행결과]

[1, 3, 5]
[1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4]
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[8, 7, 6, 5, 4, 3]
[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

 

원소 변경

순서 1. 시작 idx 생략, 마지막 idx는 4인 리스트 값 변경

순서 2. 시작 idx 5, 마지막 idx는 7인 리스트 값 변경

l[:4] = [10,20,30,40]
l[5:7] = [100,200,300,400,500]

l	# [10, 20, 30, 40, 4, 100, 200, 300, 400, 500, 7, 8, 9, 10, 11, 12, 13, 14, 15]

 

원소 삭제

l[:4] = []
l	# [4, 100, 200, 300, 400, 500, 7, 8, 9, 10, 11, 12, 13, 14, 15]

 


List 연산자

파이썬에서는 리스트끼리 더하거나 리스트에 숫자를 곱할 수 있다.

리스트끼리의 더하기(+) 연산은 두 리스트를 서로 연결시켜주며, 리스트와 정수의 곱하기(*) 연산은 해당 리스트의 모든 원소들을 정수배만큼 반복해서 연결해 준다.

 

예제

list 생성

l1 = [10,20,30]
l2 = [100,200,300,400]

 

+ 연산자를 이용해 List 합치기

l3 = l1 + l2
l3	# [10, 20, 30, 100, 200, 300, 400]

 

* 연산자를 이용해 같은 List를 N번 합치기

l4 = l1 * 4
l4	# [10, 20, 30, 10, 20, 30, 10, 20, 30, 10, 20, 30]

 

in, not in 연산자

순서 1. 30이 l4 리스트에 있는지 여부

순서 2.30이 l4 리스트에 없는지 여부

30 in l4		# True
30 not in l4		# False

 


중첩 List와 List 대입

중첩 List는 List의 원소로 리스트가 추가된 것을 말한다.

List를 포함한 다른 자료구조들도 값으로 처리되므로 자료구조의 값으로 사용될 수 있다.

 

List 대입은 각 변수에 list의 원소들이 순서대로 들어간다.

 

예제 1

순서 1. 3개의 List가 중첩된 List 생성

순서 2. 0번째 List 조회

순서 3. 1번째 List의 0번째 idx 조회

순서 4. 2번째 List의 1번째 idx 조회

my_list = [[1, 2, 3], [10,20,30,40], ['가', '나', '다']]
my_list[0]	# [1,2,3]
my_list[1][0]	# 10
my_list[2][1]	# '나'

 

예제 2

순서 1. list를 생성

순서 2. 각 변수에 리스트 원소들을 대입

a, b, c = [10, '가나다', True]
print(a, b, c)	# 10 가나다 True

a, b, c = 20, "가나다라", False
print(a, b, c)	# 20 가나다라 False

 


List 주요 메서드

 

 


반응형