수색…


소개

튜플은 값의 불변 목록입니다. 튜플은 파이썬에서 가장 단순하고 가장 일반적인 콜렉션 유형 중 하나이며 쉼표 연산자 ( 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)

튜플은 변경 불가능합니다.

파이썬에서 listtuple 의 주된 차이점 중 하나는 튜플이 불변이라는 것입니다. 즉, 튜플이 초기화되면 항목을 추가하거나 수정할 수 없습니다. 예 :

>>> 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에서는 * 접두어가 붙은 타겟 변수를 포괄 변수로 사용할 수 있습니다 ( 반복 패키지 풀기 참조).

Python 3.x 3.0
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')


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow