이롭게 현명하게

[Python] 파이썬 튜플 본문

Python

[Python] 파이썬 튜플

dev_y.h 2023. 3. 13. 18:51
728x90
반응형

 

※ 본 포스팅은 윈도우 11, Pycharm, Python3 환경에서 작성되었습니다.

 


 

목차

튜플 생성

튜플 특징

튜플 인덱싱

튜플 슬라이싱

튜플 길이 구하기

튜플 더하기

튜플 곱하기

튜플 리스트 변환

리스트와 튜플로 변수 만들기

리스트 언패킹 / 튜플 언패킹

 


 

 


[튜플(Tuple) 생성]

튜플은 리스트와 비슷하지만 리스트와는 다른 점을 가지고 있다.

리스트 튜플
[ ] ( )
값의 생성, 삭제, 수정 가능 불가능

 

<튜플 생성>

변수 b : 단 하나의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 한다.

변수 d : 괄호를 생략해도 된다.

a = ()
b = (1,)
c = (1,2,3)
d = 1,2,3
e = ('a','b','c',('ab','cd'))

 

튜플은 리스트와 비슷한 역할을 하지만 튜플과 리스트는 구별해서 사용해야 한다.

리스트 : 요소값을 수정할 수 있다.

튜플 : 요소값 수정 불가능

프로그램이 실행되는 동안 요소 값이 항상 변하지 않길 원하면 튜플을 사용한다.

프로그램이 실행되는 동안 요소 값이 수시로 변화시켜야 한다면 리스트를 사용해야 한다.

 

튜플도 리스트처럼 여러 자료형을 섞어 저장한다.

person = ('james', 17, 175.3, True)
print(person)
# ('james', 17, 175.3, True)

 

<요소가 한 개 들어있는 튜플 만들기>

요속 ㅏ한 개인 튜플을 만들 때는 ( ) (괄호) 안에 값 한 개를 넣고 ,(콤마)를 붙인다.

또는 괄호를 묶지 않고 값 한개에 ,(콤마) 를 붙인다.

  • 튜플 = (값, )
  • 튜플 = 값,
a = (38, )
print (a) # (38,)
b = 79,
print(b) # (79, )

 

값을 변경할 수 없는 튜플에서 한 개 튜플이 필요한 이유

함수(클래스) 사용시 값이 아닌 튜플을 넣어야 하는 상황이 생긴다.

이때 값은 한 개지만 튜플을 넣어야할 때 (값, )과 같은 형식을 사용해야한다.

<range를 사용하여 튜플 만들기>

 

  • 튜플 = tuple(range(횟수))
  • 튜플 = tuple(range(시작, 끝))
  • 튜플 = tuple(range(시작, 끝, 증가폭))

 

1. 튜플 = tuple(range(횟수))

a = tuple(range(10))
print(a)
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

 

 

2. 튜플 = tuple(range(시작, 끝))

range에 시작하는 숫자와 끝나는 숫자를 지정하여 튜플을 만들 수 있다.

b = tuple(range(5, 12))
print(b)
# (5, 6, 7, 8, 9, 10, 11)

 

3. 튜플 = tuple(range(시작, 끝, 증가폭))

-4 부터 2 씩 증가하여 10은 포함되지 않으므로 8까지 있는 튜플을 만든다.

c = tuple(range(-4, 10, 2))
print(c)

 

 


[튜플 특징]

튜플의 요소값은 한 번 정하면 지우거나 변경할 수 없다.

1. 튜플 요소값을 삭제하려 할 때

튜플의 요소를 리스트처럼 del함수로 지우려고 하면  오류가 발생한다.

a = (1,2,3,4)
del a[2]

'''
Traceback (most recent call last):
  File "C:\Users\samsung\PycharmProjects\python-base\p.py", line 2, in <module>
    del a[2]
TypeError: 'tuple' object doesn't support item deletion
'''

2. 튜플 요소값을 변경하려 할 때

튜플의 요소값을 변경하려고 하면 오류가 발생한다.

a = (1,2,3,4)
a[2] = 6

'''
Traceback (most recent call last):
  File "C:\Users\samsung\PycharmProjects\python-base\p.py", line 2, in <module>
    a[2] = 6
TypeError: 'tuple' object does not support item assignment
'''

 

튜플은 요소값을 변경할 수 없기 때문에 sort, insert, remove, pop과 같은 내장함수가 없다.

 

저장된 요소를 변경,추가,삭제할 수 없는 튜플을 왜 사용하는가?

파이썬 프로그래밍에서 튜플을 사용할때 유리한 경우가 있기 때문에

튜플은 요소가 값이 변경되지 않고 유지되어야 할 때 사용한다.

튜플을 만든 상태에서 요소를 변경하면 에러가 발생한다.

그러므로 요소를 실수로 변경하는 상황을 방지할 수 있다.

요소를 자주 변경해주어야 할 때는 리스트를 사용한다.


[튜플 인덱싱]

문자열, 리스트와 마찬가지로 a[0],a[1] 처럼 인덱싱이 가능하다.

a = (10,20,30,40)
print(a[0]) # 10
print(a[3]) # 40

[튜플 슬라이싱]

a [2]부터 튜플의 마지막 요소까지 슬라이싱 한다.

a = (10,20,30,40)
print(a[2:])
# (30, 40)

[튜플 길이 구하기]

a = (10,20,30,40)
b = len(a)
print(b) # 4

[튜플 더하기]

튜플 a와 튜플 b의 요소값은 바뀌지 않는다.

튜플 a와 b를 더하여 새로운 튜플 c를 생성한 것이다.

a = (10,20,30,40)
b = (10,90)
c = a + b
print(c) # (10, 20, 30, 40, 10, 90)

[튜플 곱하기]

튜플의 곱하기는 값의 곱이 아닌 반복을 말한다.

a = (10,20,30,40)
b = a * 3
print(b) # (10, 20, 30, 40, 10, 20, 30, 40, 10, 20, 30, 40)

 


[튜플 리스트 변환]

  • tuple(리스트)
  • list(튜플)

 

1. 리스트를 튜플로 변환

a = [1,2,3] # 리스트
a = tuple(a)# 리스트a를 튜플로 변환
print(a)
# (1, 2, 3)

 

2. 튜플을 리스트로 변환

b = (4,5,6) # 튜플
b = list(b) # 튜플b를 리스트로 변환
print(b)
# [4, 5, 6]

[리스트와 튜플로 변수 만들기]

리스트와 튜플을 사용하면 변수 여러개를 한번에 만들 수 있다.

이때 변수의 개수와 리스트(튜플)의 요소 수는 같아야 한다.

a, b, c = [1, 2, 3]
print(a,b,c)
#1 2 3
d,e,f=(4,5,6)
print(d,e,f)
# 4 5 6

[리스트 언패킹 / 튜플 언패킹]

리스트와 튜플의 요소를 변수 여러개에 할당하는 것을 리스트 언패킹(list unpacking), 튜플 언패킹(tuple unpacking)이라고 한다.

x = [1, 2, 3]
a,b,c = x
print(a,b,c)
# 1 2 3 
y = (4,5,6)
a,b,c=y
print(d,e,f)
# 4 5 6

 

리스트 패킹 : 변수에 리스트를 할당하는 과정

튜플 패킹 : 변수에 튜플을 할당하는 과정

a = [1, 2, 3]    # 리스트 패킹
b = (1, 2, 3)    # 튜플 패킹
c = 1, 2, 3      # 튜플 패킹

 

 

 

 

[Python] 파이썬 딕셔너리 자료형

목차 딕셔너리란? 딕셔너리 생성 딕셔너리 쌍 추가 딕셔너리 요소 삭제 딕셔너리에서 key 사용해 Value 얻기 딕셔너리 사용 시 주의 사항 코드 설명 딕셔너리명={ } 딕셔너리명 = { key : value } Key : Val

devyihyun.tistory.com

 

 


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

 

728x90
반응형

'Python' 카테고리의 다른 글

[Python] 딕셔너리 관련 함수  (0) 2023.03.15
[Python] 파이썬 딕셔너리 자료형  (0) 2023.03.14
[Python] 리스트 관련 함수  (0) 2023.03.10
[Python] 파이썬 리스트 연산  (0) 2023.03.09
[Python] 파이썬 리스트  (0) 2023.03.08
Comments