본문 바로가기
작업/Programming

파이썬(python) 배열 연습 (list, tuple)

 

 

 

리스트(list)와 튜플(tuple)은 파이썬에서 배열로 사용하는 자료 형태입니다.

2가지로 사용하는 이유는 특징이 서로 다르기 때문입니다.

 

 

""" list는 값을 한 번 저장한 다음에 수정(추가, 삭제, 변경 등)이 가능합니다.

tuple은 값을 한 번 저장하면 수정이 불가합니다. """

 

list와 tuple의 사용 형태를 정리했습니다.

 

 


 

 

1. 리스트와 튜플 선언(정의) 

 

 

배열을 만들기 위해 어떤 값을 넣을지 분명히 알고 있는 경우,

배열을 만들고 싶지만 어떤 값을 넣을지는 정하지 않은 경우로 배열을 선언하였습니다.

 

 

 

① 어떤 값을 넣을지 분명히 알고 있는 경우

 

1~4, 5~8의 정수를 저장하는 list와 tuple을 만들고 싶다는 가정을 하겠습니다.

주의해야 할 것은 리스트는 대괄호(" [ ] "), 튜플은 소괄호(" ( ) ")로 선언합니다.

 

 

 

 

 

type() 함수를 통해서 선언된 자료형이 어떤 것인지 확인해 보았습니다.

각각 list, tuple임을 확인할 수 있습니다.

 

 

 

② 어떤 값을 넣을지 정하지 않은 경우

 

미리 정하지 않은 값을 나중에 배열로 만든다고 하는 경우에는 list 자료형을 사용합니다.

tuple은 수정이 불가능하여 필요할 때 즉각 만들어야 하기 때문입니다.

파이썬에서는 list() 함수와 tuple() 함수를 적용할 수 있습니다.

 

 

list() : list 객체를 선언하거나 연속된 데이터를 list로 만든다.

tuple() : tuple 객체를 선언하거나 연속된 데이터를 tuple로 만든다.

 

 

 

 

기존 list였던 list_a는 tuple() 함수에 의해 tuple로 변환되었습니다.

반대로 tuple이었던 tuple_b는 list() 함수에 의해 list로 변환되었습니다.

새로 선언한 list_c와 tuple_d는 각각 데이터가 존재하지 않는 형태로 만들어졌습니다.

 

 


 

 

2. 인덱스(index)로 배열 데이터에 접근 

 

 

배열에 저장된 데이터는 인덱스(index)를 통해 접근할 수 있습니다.

인덱스는 배열을 포함하여 연속된 데이터에 저장된 데이터의 위치 값이며 첫 값의 인덱스는 0입니다.

 

맨 마지막 위치에 저장된 값부터 인덱스로 접근한다고 한다면 -1로 시작합니다.

문자열 "text"를 저장한 리스트의 인덱스를 예시로 만들었습니다.

 

 

 

 

 

 

인덱스를 통해 해당 위치에 저장된 데이터에 접근하기 위해서 대괄호(" [] ")를 사용합니다.

text가 저장된 text_a의 1번 인덱스는 text_a[1]로 접근하며 그 값인 "e"를 반환받습니다.

마찬가지로, 마지막부터 접근하는 인덱스 형태인 text_b[-1]은 answer의 마지막 문자인 "r"을 반환합니다.

 

 


 

 

3. 하나의 값으로 일정한 공간을 채우는 배열 선언

 

 

위의 내용들을 읽어보면 배열을 선언하는데 정해진 크기의 개념이 없다는 것을 알 수 있습니다.

그래서 크기를 정해놓고자 하는 경우에는 하나의 값으로 크기만큼 다 채워 넣는 구조를 가집니다.

보통은 0이나 1의 값을 채우는데, 그 내용을 정리했습니다.

 

 

 

 

 

곱하기( * ) 연산자와 상수를 통해서 10의 크기를 가지는 리스트와 튜플을 만들었습니다.

주의할 것은 튜플의 경우 하나의 값을 연속해서 채우려면 쉼표( , ) 기호를 포함해야 합니다.

example_a처럼 쉼표 없이 선언하면 튜플이 아니라 정수 1로 판단하며 1 * 10 = 10의 결과가 됩니다.

 

 


 

 

4. 2차원 배열 선언

 

 

지금까지 보았던 내용은 모두 1차원 배열이었습니다.

행과 열의 데이터 구조를 가지는 2차원 배열도 많이 사용하기 때문에 정리했습니다.

 

리스트로 2차원 배열을 만드는 경우 2쌍의 대괄호 묶음(" [ [ ] ] ")으로 선언합니다.

2차원 배열의 인덱스 구성은 (" [ ] [ ] ")이며 왼쪽이 행, 오른쪽이 열 인덱스입니다.

 

 

2차원 배열 인덱스(1)
2차원 배열 인덱스(2)

 

 

 

2차원 리스트를 선언한 다음 for문을 통해 구조에 맞게 출력하였습니다.

 

 

 

 

 

 

 

2차원 배열을 선언할 때 소괄호(" ( ) ")를 사용한 튜플 자료형 형태로도 가능합니다.

여기서 재미난 부분이 있습니다.

 

튜플이든 리스트든 그 큰 틀은 가장 밖의 소괄호나 대괄호로 판단합니다.

하지만, 안에 있는 2차원 틀이 큰 틀을 무조건 따르지 않습니다.

 

코드로 확인해 보겠습니다.

 

 

 

 

 

2차원 배열을 튜플로 선언하였고, 내부의 틀은 (7, 8)만 튜플, 나머지 [9, 10], [11, 12]는 리스트입니다.

여기서 리스트인 [9, 10] 데이터 중 인덱스 [1][1]인 10의 값을 20으로 변경하였습니다.

 

이 경우에는 리스트이기 때문에 값을 변경해도 문제가 발생하지 않습니다.

 

 

 

다음으로, 튜플인 (7, 8) 데이터 중 인덱스 [0][1]인 8의 값을 30으로 변경하려고 했습니다.

 

하지만 튜플의 성질에 의해 " 'tuple' object does not support item assignment" 에러를 출력합니다.

에러는 튜플로 저장된 내용을 수정하려는 시도를 할 때 발생합니다.

 

 

즉, 2차원 배열을 구성하는 데이터는 가장 밖에 선언한 자료형과 독립적으로 다루어질 수 있다는 것입니다. 

 

 

 


 

 

이번 글은 배열로 사용하는 리스트와 튜플의 선언과 간단한 사용방법을 정리했습니다.

다음으로는 배열을 쉽게 다룰 수 있게 도와주는 내장 함수들과 적용 방법을 정리하겠습니다.

읽어주셔서 감사합니다.

 

 

 

 

- 끝 -