본문 바로가기
[파이썬]/자료형

[파이썬][자료형] 배열

by sung min_Kim 2023. 11. 4.

배열, 리스트(List)

여러 값을 하나의 변수에 담을 수 있는 동적 자료형 



 

리스트를 사용하는 이유는 뭘까 ?

 

 리스트를 사용하면 여러 개의 데이터를 하나의 변수에 저장할 수 있다.

 이는 데이터를 조직하고 관리하기 쉽게 만들어 준다. 더불어 코드 또한 더욱 간결해진다.

친구들 = [['홍길동', 20, '010-xxxx-xxxx'],
  	 ['홍길동', 30, '010-xxxx-xxxx'],
  	 ['홍길동', 40, '010-xxxx-xxxx']]

 


리스트 표현방법

 

 대괄호 [] 안에 쉼표로 구분된 값을 넣어서 리스트를 생성한다.

* 자바와 다르게 파이썬에서의 리스트는 동적으로 자료형이 결정되므로, 한 리스트 안에 다양한 타입의 데이터를 담을 수 있다.

 

list = [1, "hello", 3.14, [1, 2, 3]]
print(type(list)) # <class 'list'> 반환

 


리스트 연산

 

 리스트 또한 연산기호를 사용하여 표현이 가능하다.

· 더하기 + 연산자를 사용하여 리스트들을 순서대로 하나의 리스트로 만들 수 있다.
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b) # [1, 2, 3, 4, 5, 6] 반환

 

· 곱하기 * 연산자를 사용하여 배수만큼 생성한 리스트들을 하나의 리스트로 만들 수 있다.
a = [1, 2, 3]
print(a * 3)
print(a + b) # [1, 2, 3, 1, 2, 3, 1, 2, 3] 반환

 


리스트 추출

 

 인덱싱과 슬라이싱을 활용해 리스트의 원하는 요소를 추출할 수 있다.

 

친구들 = [['홍길동1', 20, '010-xxxx-xxxx'],
         ['홍길동2', 30, '010-xxxx-xxxx'],
         ['홍길동3', 40, '010-xxxx-xxxx']]
         
# 첫 번째 리스트 추출
print(친구들[0]) # ['홍길동1', 20, '010-xxxx-xxxx'] 반환

# 마지막 번째 리스트 추출
print(친구들[-1]) # ['홍길동3', 40, '010-xxxx-xxxx'] 반환

# 첫 번째, 두 번째 리스트 추출
print(친구들[0:2]) # [['홍길동1', 20, '010-xxxx-xxxx'], ['홍길동2', 30, '010-xxxx-xxxx']] 반환

# 첫 번째 리스트의 '홍길동1' 데이터 추출
print(친구들[0][0]) # 홍길동1 반환

# 두 번째 리스트의 '홍길동2', '30' 데이터 추출
print(친구들[1][0:2]) # ['홍길동2', 30] 반환

 

· 추출한 요소를 원하는 값으로 변경
친구들 = [['홍길동1', 20, '010-xxxx-xxxx'],
         ['홍길동2', 30, '010-xxxx-xxxx'],
         ['홍길동3', 40, '010-xxxx-xxxx']]

친구들[0][0] = '김성민'
친구들[1][2] = '010-1111-1111'
친구들[2][0:3] = '나대리', 35, '010-2222-2222'

print(친구들) # [['김성민', 20, '010-xxxx-xxxx'], 
              # ['홍길동2', 30, '010-1111-1111'], 
              # ['나대리', 35, '010-2222-2222']] 반환

 


리스트 함수

 

파이썬에서는 리스트를 다루는 데 유용한 함수를 제공한다.

(많이 사용되는 함수 앞에는 * 별 문자를 표기할 것이며, 찾고자 하는 함수가 있다면 Cnt + F 를 통해 찾길 바란다.)

 

·  *  len() : 리스트의 길이를 반환하는 함수이다.
a = [1, 2, 3, 4, 5]
print(len(a)) # 5 반환

 

· * sum(), min(), max() : 리스트 요소의 총합, 최소 값, 최대 값을 반환하는 함수이다.
a = [1, 2, 3, 4, 5]
print(sum(a)) # 15 반환
print(min(a)) # 1 반환
print(max(a)) # 5 반환

 

· * in() : 특정 요소가 리스트 안에 있는지 확인하는 함수로, 불리언 타입의 결과를 반환한다.
a = [1, 2, 3, 4, 5]
print(1 in(a))	     # True 반환
print(6 in(a))	     # False 반환
print(type("" in())) # <class : 'bool'>

 

· * li.index() : 리스트에서 특정 요소가 존재하는 인덱스를 찾을 수 있는 함수이다.
list = ['banana', 'apple', 'cherry']
print(list.index('apple')) # 1 반환
 찾고자 하는 요소가 없으면 ValueError 을 발생시키니 in 함수를 통해 먼저 요소가 존재하는지
확인하는 과정이 필요하다.
list = ['banana', 'apple', 'cherry']
# print(list.index('melon')) # ValueError 오류 발생
print('melon' in(list))    # False 반환

 

· * li.append() : 리스트의 끝에 요소를 추가하는 함수며, 하나의 요소만을 추가할 수 있다.
다음 글에서 알아볼 딕셔너리는 순서가 없기 때문에 임의의 순서로 출력되는 것을 볼 수 있다.
a = [1, 2, 3, 4, 5]
a.append(6)
print(a) # [1, 2, 3, 4, 5, 6] 반환

a.append([6, 7, 8])
print(a) # [1, 2, 3, 4, 5, [6, 7, 8]] 반환

a.append('6, 7, 8')
print(a) # [1, 2, 3, 4, 5, {8, 6, 7}] 반환
 여러 요소를 추가하려고 하니 'append()는 정확히 하나의 인수를 받을 수 있다.' 라고 하는
TypeError 가 발생한다.
여러 요소를 추가하려고 하는 경우 extend() 함수를 사용하도록 하자.
a = [1, 2, 3, 4, 5]
a.append(6, 7, 8)
print(a) # TypeError: list.append() 오류 반환

 

·  *  li.extend() : 리스트의 끝에 여러 요소를 추가하는 함수이다. 여러 요소를 추가하기 때문에 [] 중괄호를 사용해야 한다.
a = [1, 2, 3, 4, 5]
a.extend([6, 7, 8])
print(a) # [1, 2, 3, 4, 5, 6, 7, 8] 반환

a.extend({6, 7, 8})
print(a) # [1, 2, 3, 4, 5, 8, 6, 7] 반환

 

·  *  li.insert() : 특정 위치에 요소를 삽입하는 함수이다.
a = [1, 2, 3, 4, 5]
a.insert(5, 6)
print(a) # [1, 2, 3, 4, 5, 6] 반환

 

·  *  li.remove() : 리스트에서 삭제할 값의 첫 번째 요소를 삭제하는 함수이다.
a = [1, 2, 3, 2, 4]
a.remove(2)
print(a) # [1, 3, 2, 4] 반환

 

·  *  li.pop() : 리스트에서 지정한 위치의 요소를 삭제하는 함수이다. 인덱스를 지정하지 않으면 맨 뒤의 요소를 삭제한다.
a = [1, 2, 3, 4, 5]
a.pop(0)
print(a) # [2, 3, 4, 5] 반환

a.pop()
print(a) # [1, 2, 3, 4] 반환

 

· join() : 리스트의 각 요소 하나의 문자열로 반환하는 함수이다. 리스트의 각 요소들을 순회하면서, 각 요소 사이에 원하는 값을 추가하여 새로운 문자열을 반환한다.
a = ['가', '나', '다']
print('0'.join(a)) # 가0나0다 반환
단, join 은 문자열 함수이기 때문에, 반드시 str 타입의 객체에 적용해야 한다.
마찬가지로 추가할 값의 타입 또한 str 타입이어야 한다.
숫자나 다른 요소가 있을 경우TypeError 가 발생하기 때문이다.
a = [1, 2, 3]
print('0'.join(a)) # TypeError: sequence item 0: expected str instance, int found 오류 발생

a = ['가', '나', '다']
print(0.join(a)) # SyntaxError: invalid imaginary literal 오류 발생

 

· * range(start, stop, step) : 숫자 시퀀스를 연속적으로 생성하는 함수이다.

 

  • 숫자 시퀀스란 일련의 숫자들이 특정한 순서나 규칙에 따라 나열된 것을 의미한다.
  • start : 시퀀스가 시작하는 값을 의미한다. 기본 값은 0 이다.
  • stop : 시퀀스가 끝나는 값을 의미한다. 단, stop 값은 생성되지 않는다.
  • step : 시퀀스에서 각 숫자 사이의 간격을 의미한다. 기본 값은 1 이다.
# 1부터 10까지 숫자를 가진 리스트 생성
list1 = list(range(1, 11)) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 반환

#  1부터 10까지 2씩 증가하는 숫자를 가진 리스트 생성
list2 = list(range(1, 11)) # [1, 3, 5, 7, 9] 반환

# 10에서 1까지 역순으로 숫자를 가진 리스트 생성
list3 = list(range(10, 0, -1)) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 반환

# 10에서 1까지 역순으로 2씩 감소하는 숫자를 가진 리스트 생성
list4 = list(range(10, 0, -2) # [10, 8, 6, 4, 2] 반환

 

 주로 for 반복문에서 일련의 숫자를 생성하는 데 사용된다. 이는 반복문을 특정 횟수만큼 실행하거나, 인덱스를 통해 시퀀스나 리스트에 접근하는데 유용하다.
list = ['banana', 'apple', 'cherry']

for i in range(len(list)):
  print(i) # 3회 반복 수행
  
for i in range(0, 10):
  print(i) # 10회 반복 수행
  
for i in range(0, 10, 2):
  print(i) # 5회 반복 수행

 


 

파이썬에서의 배열, 리스트에 대해 알아보았다.

리스트는 인덱스로의 접근을 통해 데이터를 나열한 자료형이다.

각 인덱스는 고유한 위치를 가지며, 해당 위치에 존재하는 데이터를 참조할 수 있다.

 

다만, 특정 요소를 찾기 위한 목적이라면 처음부터 끝까지 순회하는 특징을 가진 리스트는

부합하지 않다. 이 경우에는 딕셔너리를 사용하는 게 알맞겠다.

 

리스트의 경우 데이터를 순차적으로 처리하거나

특정 순서에 의존하는 조건 및 제어문을 구현할 때 유용하다고 한다.

비슷하지만 사용 목적에 따라 잘 구별하여 사용하도록 하자.

 

다음 글에서는 딕셔너리에 대해 알아보도록 하자.

 

 

'[파이썬] > 자료형' 카테고리의 다른 글

[파이썬][자료형] 집합  (0) 2023.11.05
[파이썬][자료형] 불리언  (0) 2023.11.05
[파이썬][자료형] 딕셔너리  (0) 2023.11.05
[파이썬][자료형] 문자형  (0) 2023.11.04
[파이썬][자료형] 숫자형  (0) 2023.11.03