Python Language
튜플
수색…
소개
튜플은 값의 불변 목록입니다. 튜플은 파이썬에서 가장 단순하고 가장 일반적인 콜렉션 유형 중 하나이며 쉼표 연산자 ( value = 1, 2, 3
)로 생성 될 수 있습니다.
통사론
(1, a, "hello") # a는 변수 여야합니다
() # 빈 튜플
(1,) # 1 요소 터플.
(1)
은 튜플이 아닙니다.1, 2, 3 # 3 요소 튜플 (1, 2, 3)
비고
괄호는 빈 튜플이나 함수 호출에서 사용될 때만 필요합니다.
튜플은 일련의 값입니다. 값은 모든 유형이 될 수 있으며 정수로 인덱싱됩니다. 따라서 튜플은 목록과 매우 유사합니다. 중요한 차이점은 튜플은 불변이며 해시 가능하다는 점이므로 집합과 맵에서 사용할 수 있습니다.
인덱싱 튜플
x = (1, 2, 3)
x[0] # 1
x[1] # 2
x[2] # 3
x[3] # IndexError: tuple index out of range
음수를 사용한 인덱싱은 마지막 요소에서 -1로 시작합니다.
x[-1] # 3
x[-2] # 2
x[-3] # 1
x[-4] # IndexError: tuple index out of range
요소 범위 색인화
print(x[:-1]) # (1, 2)
print(x[-1:]) # (3,)
print(x[1:3]) # (2, 3)
튜플은 변경 불가능합니다.
파이썬에서 list
와 tuple
의 주된 차이점 중 하나는 튜플이 불변이라는 것입니다. 즉, 튜플이 초기화되면 항목을 추가하거나 수정할 수 없습니다. 예 :
>>> t = (1, 4, 9)
>>> t[0] = 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
비슷하게, 튜플은 list
처럼 .append
와 .extend
메소드를 가지고 있지 않다. +=
를 사용할 수는 있지만 튜플 자체가 아닌 변수의 바인딩을 변경합니다.
>>> t = (1, 2)
>>> q = t
>>> t += (3, 4)
>>> t
(1, 2, 3, 4)
>>> q
(1, 2)
lists
과 같이 변경 가능한 객체를 튜플에 배치 할 때는주의하십시오. 이로 인해 변경시 매우 혼란스러운 결과가 발생할 수 있습니다. 예 :
>>> t = (1, 2, 3, [1, 2, 3])
(1, 2, 3, [1, 2, 3])
>>> t[3] += [4, 5]
둘 다 오류를 발생시키고 튜플 내에서 목록의 내용을 변경합니다.
TypeError: 'tuple' object does not support item assignment
>>> t
(1, 2, 3, [1, 2, 3, 4, 5])
+=
연산자를 사용하여 튜플에 "추가"할 수 있습니다.이 연산자는 "추가 된"새 요소가있는 새 튜플을 만들고 현재 변수에 할당하여 작동합니다. 오래된 튜플은 변경되지 않지만 대체됩니다!
이렇게하면리스트간에 변환하는 것을 피할 수는 있지만, 이것은 느리고 특히 여러 번 추가하려는 경우에는 바람직하지 않습니다.
튜플은 요소 적으로 해시 가능하고 해시 가능합니다.
hash( (1, 2) ) # ok
hash( ([], {"hello"}) # not ok, since lists and sets are not hashabe
따라서 튜플은 내부에 놓을 수 set
A의 키 또는 dict
만의 각 요소가있다.
{ (1, 2) } # ok
{ ([], {"hello"}) ) # not ok
튜플
구문 적으로 튜플은 쉼표로 구분 된 값 목록입니다.
t = 'a', 'b', 'c', 'd', 'e'
꼭 필요한 것은 아니지만, 괄호 안에 튜플을 묶는 것이 일반적입니다.
t = ('a', 'b', 'c', 'd', 'e')
괄호로 빈 터플을 만듭니다.
t0 = ()
type(t0) # <type 'tuple'>
단일 요소가 포함 된 튜플을 만들려면 최종 쉼표를 포함시켜야합니다.
t1 = 'a',
type(t1) # <type 'tuple'>
괄호 안에있는 단일 값은 튜플이 아닙니다.
t2 = ('a')
type(t2) # <type 'str'>
싱글 톤 튜플을 생성하려면 후행 콤마가 필요합니다.
t2 = ('a',)
type(t2) # <type 'tuple'>
싱글 톤 튜플의 경우 괄호를 사용하는 것이 좋습니다 ( 후행 쉼표의 경우 PEP8 참조). 또한 후행 쉼표 뒤에 공백이 없어야합니다 (공백의 경우 PEP8 참조)
t2 = ('a',) # PEP8-compliant
t2 = 'a', # this notation is not recommended by PEP8
t2 = ('a', ) # this notation is not recommended by PEP8
튜플을 만드는 또 다른 방법은 내장 함수 tuple
입니다.
t = tuple('lupins')
print(t) # ('l', 'u', 'p', 'i', 'n', 's')
t = tuple(range(3))
print(t) # (0, 1, 2)
이 예제는 Allen B. Downey의 Think Python 책의 내용을 기반으로합니다.
튜플 패킹 및 언팩
파이썬의 튜플은 쉼표로 구분 된 값입니다. 튜플을 입력하기위한 괄호는 선택 사항이므로 두 개의 지정
a = 1, 2, 3 # a is the tuple (1, 2, 3)
과
a = (1, 2, 3) # a is the tuple (1, 2, 3)
동등하다. 할당 a = 1, 2, 3
은 값과 함께 튜플에 팩하기 때문에 패킹 이라고도합니다.
one-value 튜플은 튜플이기도합니다. 변수가 하나의 값이 아니라 튜플이라는 것을 파이썬에게 알리려면 뒤에 쉼표를 사용할 수 있습니다
a = 1 # a is the value 1
a = 1, # a is the tuple (1,)
괄호를 사용하는 경우에도 쉼표가 필요합니다.
a = (1,) # a is the tuple (1,)
a = (1) # a is the value 1 and not a tuple
튜플에서 값의 압축을 풀고 여러 개의 할당을 사용하려면
# unpacking AKA multiple assignment
x, y, z = (1, 2, 3)
# x == 1
# y == 2
# z == 3
자리 표시 자 역할을하는 튜플의 일부 요소 만 필요하면 _
기호를 일회용 변수 이름으로 사용할 수 있습니다.
a = 1, 2, 3, 4
_, x, y, _ = a
# x == 2
# y == 3
단일 요소 튜플 :
x, = 1, # x is the value 1
x = 1, # x is the tuple (1,)
파이썬 3에서는 *
접두어가 붙은 타겟 변수를 포괄 변수로 사용할 수 있습니다 ( 반복 패키지 풀기 참조).
first, *more, last = (1, 2, 3, 4, 5)
# first == 1
# more == [2, 3, 4]
# last == 5
요소 반전
튜플 내의 요소를 뒤집습니다.
colors = "red", "green", "blue"
rev = colors[::-1]
# rev: ("blue", "green", "red")
colors = rev
# colors: ("blue", "green", "red")
또는 역순 (역순으로 사용하면 튜플로 변환 된 iterable을 제공) :
rev = tuple(reversed(colors))
# rev: ("blue", "green", "red")
colors = rev
# colors: ("blue", "green", "red")
빌트인 튜플 함수
튜플은 다음과 같은 내장 함수를 지원합니다.
비교
요소가 동일한 유형 인 경우 Python은 비교를 수행하고 결과를 반환합니다. 요소가 다른 유형 인 경우, 요소가 숫자인지 점검합니다.
- 숫자 인 경우 비교를 수행하십시오.
- 두 요소 중 하나가 숫자이면 다른 요소가 반환됩니다.
- 그렇지 않으면 유형이 사전 순으로 정렬됩니다.
목록 중 하나의 끝에 도달하면 긴 목록은 "더 커"니다. 두리스트가 같으면 0을 반환합니다.
tuple1 = ('a', 'b', 'c', 'd', 'e')
tuple2 = ('1','2','3')
tuple3 = ('a', 'b', 'c', 'd', 'e')
cmp(tuple1, tuple2)
Out: 1
cmp(tuple2, tuple1)
Out: -1
cmp(tuple1, tuple3)
Out: 0
튜플 길이
함수 len
은 튜플의 총 길이를 반환한다.
len(tuple1)
Out: 5
튜플의 최대 값
max
함수는 최대 값을 가진 튜플에서 항목을 반환합니다.
max(tuple1)
Out: 'e'
max(tuple2)
Out: '3'
튜플의 최소값
min 함수는 min 값을 갖는 튜플에서 아이템을 반환한다.
min(tuple1)
Out: 'a'
min(tuple2)
Out: '1'
목록을 튜플로 변환
내장 함수 tuple
은 목록을 tuple
로 변환합니다.
list = [1,2,3,4,5]
tuple(list)
Out: (1, 2, 3, 4, 5)
튜플 연결
+
를 사용하여 두 개의 튜플을 연결합니다.
tuple1 + tuple2
Out: ('a', 'b', 'c', 'd', 'e', '1', '2', '3')