[Python 기초] 파이썬 자료형 - 리스트(List), 튜플(Tuple)

업데이트:

개요

jpg


1. 리스트(List) 자료형

리스트(list)는 숫자나 문자 등의 자료들을 하나의 집합으로 모아줄 수 있고, 개별 원소 뿐 아니라 어떤 자료형도 하나의 집합으로 가질 수 있기 때문에 편리한 장점이 있다.

리스트를 생성하려면 다음과 같이 하면 된다.

yg_list = [1,2,3,4,5]
a = []
b = [1,2,3]
c = ['YG','analyst',1,2,3]
d = [1,2,c]

위와 같이 문자, 숫자 뿐아니라 리스트 자체도 리스트 내에 포함될 수 있다.

1-1. 인덱싱(indexing) & 슬라이싱(slicing)

문자형에서의 인덱싱, 슬라이싱과 같은 방식이다.

d[0]
[Outpu] 1

d = [1,2,['YG','analyst',1,2,3]]의 경우 리스트 내에 리스트가 포함되어 있으므로 두번의 인덱싱을 통해 원하는 값을 뽑을 수 도 있다.

d[2][1]
[Outpu] 'analyst'

1-2. 리스트 연산

리스트와 리스트의 합은 다음과 같이 하나의 두 리스트의 원소를 모두가진 하나의 리스트로 생성된다.

a = [1,2,3]
b = [4,5,6]
a+b
[Output] [1, 2, 3, 4, 5, 6]

그러나 인덱싱을 통한 개별 원소는 이제 더이상 리스트가 아니므로, 자료형이 다를 경우 오류가 발생한다.

a[2] + "YG"
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-17-1a6c4422f9f9> in <module>()
----> 1 a[2] + "YG"


TypeError: unsupported operand type(s) for +: 'int' and 'str'

따라서 문자형으로 변환해주는 함수 str()을 이용해 숫자형을 문자형으로 변경 후, 연산이 가능하다.

str(a[2]) + "YG"
[Output] '3YG'

1-3. 리스트 값 수정

인덱싱을 응용해서 리스트 내의 값을 삭제, 변경 할 수 있다.

a = [1,2,3]
a[2] = 100
print(a)
[Output] [1, 2, 100]

a[2] (a의 3번째 원소)를 100으로 바꿔준 예 이다.

다음은 리스트 내의 한 원소를 여러개의 원소로 바꿀때 생기는 두가지 경우이다.

a = [1,2,3]
a[1:2] = ['a','b','c']
print(a)
[Output] [1, 'a', 'b', 'c', 3]
a = [1,2,3]
a[1] = ['a','b','c']
print(a)
[Output] [1, ['a', 'b', 'c'], 3]

인덱싱을 할때 범위를 지정할때는(전자) a,b,c라는 원소를 개별원소로 인식하여 삽입해주는 반면, 한 원소를 지정하게되면(후자) 리스트 자체로 변경해주는 차이가 있는 점을 유의해야 한다.

리스트 내의 원소를 삭제할때는 del함수와 기본 인덱싱을 통해 가능하다.

a = [1,2,3]
del a[1] 
print(a)
[Output] [1, 3]
a = [1,2,3]
a[1:2] = [] 
print(a)
[Output] [1, 3]

1-4. 리스트 관련 함수

  • 요소 추가(append)
a = [1,2,3]
a.append(4)
print(a)
[Output] [1, 2, 3, 4]
a.append([5,6])
print(a)
[Output] [1, 2, 3, 4, [5, 6]]
  • 정렬(sort) & 뒤집기(reverse)
a = [4,1,3,2]
a.sort()
print(a)
[Output] [1, 2, 3, 4]
a = ['c','a','b']
a.sort()
print(a)
[Output] ['a', 'b', 'c']

숫자형 뿐만 아니라 문자형도 알파벳 순으로 정렬이 가능하다.

a = ['c','a','b']
a.reverse()
print(a)
[Output] ['b', 'a', 'c']

a.sort(reverse=True)로도 reverse()와 같은 결과이다.

  • 위치 반환(idnex)
a = [1,3,5,7]
a.index(5)
[Output] 2

리스트 내 요소의 위치(index)를 반환해준다.

  • 요소 삽입(insert)
a = [1,2,3]
a.insert(0,4)
print(a)
[Output] [4, 1, 2, 3]

a[0] (1번째)의 위치에 4를 삽입한다.

a.insert(3,5)
print(a)
[Output] [4, 1, 2, 5, 3]

a[3] (4번째)의 위치에 5를 삽입한다.

  • 요소 제거(remove)
a = [1,2,3,1,2,3]
a.remove(3)
print(a)
[Output] [1, 2, 1, 2, 3]

3이라는 요소를 제거한다. 리스트 내에 3이 여러개인 경우 첫번째 원소를 먼저 제거한다.

a.remove(3)
print(a)
[Output] [1, 2, 1, 2]

한번 더 실행하면 두번째 3이 제거된다.

  • 요소 개수 세기 (count)
a = [1,2,3,4,1,6,2]
a.count(1)
[Output] 2

리스트 내에 1이라는 요소가 포함된 개수를 반환한다.

  • 확장(extend)
a = [1,2,3]
a.extend([4,5])
print(a)
[Output] [1, 2, 3, 4, 5]

기존 리스트에 새로운 요소를 추가한다.

a = [1,2,3]
a+[4,5]
[Output] [1, 2, 3, 4, 5]

앞의 리스트 연산에서와 같은 결과 값이다.


2.튜플(Tuple) 자료형

튜플은 리스트와 아주 비슷한 성질을 가지므로 생성하는 방법과 간단한 설명만 덧붙이기로 한다.

t1 = ()
t2 = (2,)   #요소가 한개일때는 붙여야함
t3 = (1,2,3)
t4 = 1,2,3
t5 = ('a','b',('ab','cd'))

리스트와 달리 튜플은 1,2,3 처럼 괄호를 생략해서 생성할 수 있는 차이가 있다. 또한 1개의 요소를 가질때는 (2,)와 같이 콤마를 붙여주어야 한다.

그리고 튜플은 리스트와 연산이나 인덱싱, 슬라이싱이 모두 같은 방식으로 이루어진다. 그러나 튜플의 경우 값을 변화시킬 수 없는 특징때문에 삭제나 변경이 불가능하다.


Reference

도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.

댓글남기기