웹사이트 검색

Python 3의 튜플 이해


소개

튜플은 변경할 수 없거나 변경할 수 없는 순서가 지정된 요소 시퀀스인 데이터 구조입니다. 튜플은 변경할 수 없기 때문에 해당 값을 수정할 수 없습니다. 다음은 네 가지 요소로 구성된 예제 튜플입니다.

Example Tuple
coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

튜플은 데이터를 그룹화하는 데 사용됩니다. 튜플 내부에 있는 각 요소 또는 값을 항목이라고 합니다.

튜플은 쉼표 ,로 구분된 괄호 ( ) 사이에 값이 있습니다. 빈 튜플은 coral =()로 표시되지만 값이 하나라도 있는 튜플은 coral = (blue coral,)과 같이 쉼표를 사용해야 합니다.

위의 튜플을 print()하면 튜플이 괄호로 묶인 다음과 같은 출력을 받게 됩니다.

print(coral)
Output
('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

컬렉션 유형인 Python 튜플 및 기타 데이터 구조에 대해 생각할 때 파일 모음, 노래 재생 목록, 브라우저 북마크, 이메일, 비디오 컬렉션 등 컴퓨터에 있는 다양한 컬렉션을 모두 고려하는 것이 유용합니다. 스트리밍 서비스 등에 액세스할 수 있습니다.

튜플은 목록과 비슷하지만 값을 수정할 수 없습니다. 이 때문에 코드에서 튜플을 사용할 때 해당 값 시퀀스에 변경을 의도하지 않는다는 것을 다른 사람에게 전달하는 것입니다. 또한 값이 변경되지 않기 때문에 Python에서 튜플을 사용하여 코드를 최적화할 수 있습니다. 코드는 목록보다 튜플에서 약간 더 빠릅니다.

전제 조건

컴퓨터나 서버에 Python 3가 설치되어 있고 프로그래밍 환경이 설정되어 있어야 합니다. 프로그래밍 환경이 설정되지 않은 경우 운영 체제(Ubuntu, CentOS, Debian 등)에 적합한 서버의 프로그래밍 환경에 대한 설치 및 설정 가이드를 참조할 수 있습니다.

인덱싱 튜플

순서가 지정된 요소 시퀀스로서 튜플의 각 항목은 인덱싱을 통해 개별적으로 호출할 수 있습니다.

각 항목은 색인 번호 0부터 시작하는 정수 값인 색인 번호에 해당합니다.

정보: 이 자습서의 예제 코드를 따라하려면 python3 명령을 실행하여 로컬 시스템에서 Python 대화형 셸을 엽니다. 그런 다음 >>> 프롬프트 뒤에 추가하여 예제를 복사, 붙여넣기 또는 편집할 수 있습니다.

이 튜토리얼의 시작 부분에 있는 예제 coral 튜플의 경우 인덱스 분석은 다음과 같습니다.

‘blue coral’ ‘staghorn coral’ ‘pillar coral’ ‘elkhorn coral’
0 1 2 3

첫 번째 항목인 blue coral 문자열은 인덱스 0에서 시작하고 목록은 elkhorn coral 항목이 있는 인덱스 3에서 끝납니다.

Python 튜플의 각 항목에는 해당 인덱스 번호가 있으므로 항목에 액세스할 수 있습니다.

이제 인덱스 번호를 참조하여 튜플의 개별 항목을 호출할 수 있습니다.

print(coral[2])
Output
pillar coral

이 튜플의 색인 번호 범위는 위의 표에 표시된 대로 0-3입니다. 따라서 항목을 개별적으로 호출하려면 다음과 같이 인덱스 번호를 참조합니다.

coral[0] = 'blue coral'
coral[1] = 'staghorn coral' 
coral[2] = 'pillar coral' 
coral[3] = 'elkhorn coral'

3보다 큰 인덱스 번호로 튜플 coral을 호출하면 유효하지 않으므로 범위를 벗어납니다.

print(coral[22])
Output
IndexError: tuple index out of range

양수 인덱스 번호 외에도 -1에서 시작하여 튜플의 끝에서 거꾸로 세어 음수 인덱스 번호가 있는 튜플의 항목에 액세스할 수도 있습니다. 이는 긴 튜플이 있고 튜플의 끝 부분에 있는 항목을 정확히 지정하려는 경우에 특히 유용합니다.

동일한 튜플 coral의 경우 음수 인덱스 분석은 다음과 같습니다.

‘blue coral’ ‘staghorn coral’ ‘pillar coral’ ‘elkhorn coral’
-4 -3 -2 -1

따라서 음수 색인 번호를 사용하여 항목 blue coral을 인쇄하려면 다음과 같이 할 수 있습니다.

print(coral[-4])
Output
blue coral

+ 연산자를 사용하여 튜플의 문자열 항목을 다른 문자열과 연결할 수 있습니다.

print('This reef is made up of ' + coral[1])
Output
This reef is made up of staghorn coral

색인 번호 0에 있는 문자열 항목을 문자열 This reef is made up of 와 연결할 수 있었습니다. 또한 + 연산자를 사용하여 2개 이상의 튜플을 함께 연결할 수 있습니다.

튜플 내의 항목에 해당하는 인덱스 번호를 사용하여 튜플의 각 항목에 개별적으로 액세스할 수 있습니다.

튜플 슬라이싱

인덱싱을 사용하여 튜플에서 몇 가지 항목을 호출할 수 있습니다. 슬라이스를 사용하면 [x:y] 콜론으로 구분된 인덱스 번호 범위를 생성하여 여러 값을 호출할 수 있습니다.

coral의 중간 항목만 인쇄하고 싶다고 가정해 보겠습니다. 조각을 만들어 그렇게 할 수 있습니다.

print(coral[1:3])
Output
('staghorn coral', 'pillar coral')

[1:3]에서와 같이 슬라이스를 생성할 때 첫 번째 인덱스 번호는 슬라이스가 시작되는 위치(포함)이고 두 번째 인덱스 번호는 슬라이스가 끝나는 위치(제외)입니다. 위의 예에서 위치에 있는 항목, 12는 인쇄되는 항목입니다.

목록의 양쪽 끝을 포함하려면 tuple[x:y] 구문에서 숫자 중 하나를 생략할 수 있습니다. 예를 들어 튜플 coral의 처음 3개 항목을 인쇄하려는 경우 — blue coral, staghorn coral, 기둥 산호 — 다음을 입력하면 됩니다.

print(coral[:3])
Output
('blue coral', 'staghorn coral', 'pillar coral')

이것은 인덱스 3 바로 앞에서 멈추는 튜플의 시작 부분을 인쇄했습니다.

튜플의 끝에 모든 항목을 포함하려면 구문을 반대로 해야 합니다.

print(coral[1:])
Output
('staghorn coral', 'pillar coral', 'elkhorn coral')

양수 인덱스 번호와 마찬가지로 튜플을 슬라이싱할 때 음수 인덱스 번호를 사용할 수도 있습니다.

print(coral[-3:-1])
print(coral[-2:])
Output
('staghorn coral', 'pillar coral') ('pillar coral', 'elkhorn coral')

슬라이싱에 사용할 수 있는 마지막 매개변수 중 하나는 stride라고 하는데, 이는 튜플에서 첫 번째 항목을 검색한 후 앞으로 이동할 항목 수를 나타냅니다.

지금까지 우리는 stride 매개변수를 생략했으며 Python은 기본적으로 stride 1을 사용하므로 두 인덱스 번호 사이의 모든 항목이 검색됩니다.

이 구성의 구문은 tuple[x:y:z]이며 z는 보폭을 나타냅니다. 더 큰 목록을 만든 다음 슬라이스하고 stride 값을 2로 지정해 보겠습니다.

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

print(numbers[1:11:2])
Output
(1, 3, 5, 7, 9)

우리의 구성 number[1:11:2]1을 포함하고 11을 제외한 인덱스 번호 사이의 값을 인쇄한 다음 stride 값은 2는 다른 모든 항목만 인쇄하도록 프로그램에 지시합니다.

처음 두 매개변수를 생략하고 tuple[::z] 구문을 사용하여 stride만 매개변수로 사용할 수 있습니다.

print(numbers[::3])
Output
(0, 3, 6, 9, 12)

stride가 3으로 설정된 튜플 숫자를 출력하면 세 번째 항목마다 출력됩니다.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

양수 및 음수 인덱스 숫자와 보폭을 나타내는 튜플을 슬라이싱하면 달성하려는 출력을 수신할 수 있는 컨트롤이 제공됩니다.

튜플 연결 및 곱하기

연산자를 사용하여 튜플을 연결하거나 곱할 수 있습니다. 연결은 + 연산자로 수행되고 곱셈은 * 연산자로 수행됩니다.

+ 연산자는 두 개 이상의 튜플을 함께 연결하는 데 사용할 수 있습니다. 두 개의 기존 튜플 값을 새 튜플에 할당할 수 있습니다.

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

coral_kelp = (coral + kelp)

print(coral_kelp)
Output
('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

+ 연산자는 연결할 수 있기 때문에 기존 튜플을 수정할 수는 없지만 튜플을 결합하여 새 튜플을 형성하는 데 사용할 수 있습니다.

* 연산자는 튜플을 곱하는 데 사용할 수 있습니다. 디렉토리에 있는 모든 파일을 서버에 복사하거나 친구와 재생 목록을 공유해야 할 수 있습니다. 이러한 경우 데이터 컬렉션을 곱해야 합니다.

coral 튜플에 2를 곱하고 kelp 튜플에 3을 곱하고 새 튜플에 할당합니다.

multiplied_coral = coral * 2
multiplied_kelp = kelp * 3

print(multiplied_coral)
print(multiplied_kelp)
Output
('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral') ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

* 연산자를 사용하여 지정한 횟수만큼 튜플을 복제하여 원래 데이터 시퀀스를 기반으로 새 튜플을 생성할 수 있습니다.

기존 튜플은 +* 연산자를 사용하여 연결하거나 곱하여 새 튜플을 형성할 수 있습니다.

튜플 함수

튜플 작업에 사용할 수 있는 몇 가지 기본 제공 함수가 있습니다. 그 중 몇 가지를 살펴보겠습니다.

렌()

문자열 및 목록과 마찬가지로 튜플을 매개 변수로 전달하는 len()을 사용하여 튜플의 길이를 계산할 수 있습니다.

len(coral)

이 기능은 예를 들어 최소 또는 최대 컬렉션 길이를 적용해야 하거나 시퀀스 데이터를 비교해야 하는 경우에 유용합니다.

튜플 kelpnumbers의 길이를 인쇄하면 다음과 같은 결과가 표시됩니다.

print(len(kelp))
print(len(numbers))
Output
4 13

튜플 kelp에 4개의 항목이 있기 때문에 위의 출력을 받습니다.

kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

그리고 튜플 숫자에는 13개의 항목이 있습니다.

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

이러한 예제에는 항목이 상대적으로 적지만 len() 함수는 큰 튜플에 얼마나 많은 항목이 있는지 확인할 수 있는 기회를 제공합니다.

최대() 및 최소()

숫자 항목(부동 소수점 포함)으로 구성된 튜플로 작업할 때 max()min() 함수를 사용하여 해당 항목에 포함된 최고값과 최저값을 찾을 수 있습니다. 각각의 튜플.

이러한 기능을 통해 테스트 점수, 온도, 가격 등과 같은 양적 데이터에 대한 정보를 찾을 수 있습니다.

플로트로 구성된 튜플을 살펴보겠습니다.

more_numbers = (11.13, 34.87, 95.59, 82.49, 42.73, 11.12, 95.57)

max()를 얻으려면 max(more_numbers)에서와 같이 튜플을 함수에 전달합니다. 결과를 출력할 수 있도록 이것을 print() 함수와 결합합니다.

print(max(more_numbers))
Output
95.59

max() 함수는 튜플에서 가장 높은 값을 반환했습니다.

마찬가지로 min() 함수를 사용할 수 있습니다.

print(min(more_numbers))
Output
11.12

여기에서 가장 작은 플로트가 튜플에서 발견되어 출력되었습니다.

len() 함수와 마찬가지로 max()min() 함수는 많은 것을 포함하는 튜플로 작업할 때 매우 유용할 수 있습니다. 가치.

튜플과 리스트의 차이점

튜플이 목록과 다른 주된 방법은 수정할 수 없다는 것입니다. 즉, 튜플에서 항목을 추가하거나 제거할 수 없으며 튜플 내에서 항목을 바꿀 수 없습니다.

그러나 2개 이상의 튜플을 연결하여 새 튜플을 형성할 수 있습니다.

coral 튜플을 살펴보겠습니다.

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

푸른 산호 항목을 검은 산호라는 다른 항목으로 바꾸고 싶다고 가정해 보겠습니다. 목록과 동일한 방식으로 해당 출력을 변경하려면 다음을 입력하십시오.

coral[0] = 'black coral'

출력으로 오류가 표시됩니다.

Output
TypeError: 'tuple' object does not support item assignment

튜플은 수정할 수 없기 때문입니다.

튜플을 생성하고 실제로 필요한 것이 목록이라고 결정하면 이를 목록으로 변환할 수 있습니다. 튜플을 목록으로 변환하려면 list()를 사용하면 됩니다.

list(coral)

이제 coral 데이터 유형은 목록이 됩니다.

coral = ['blue coral', 'staghorn coral', 'pillar coral']

괄호가 대괄호로 바뀌었기 때문에 튜플이 리스트로 변환된 것을 볼 수 있습니다.

마찬가지로 tuple()을 사용하여 목록을 튜플로 변환할 수 있습니다.

\Python 3에서 데이터 유형을 변환하는 방법\을 읽어 데이터 유형 변환에 대해 자세히 알아볼 수 있습니다.

결론

튜플 데이터 유형은 수정할 수 없는 순차 데이터 유형으로, Python이 처리하는 목록보다 다소 빠른 유형이 됨으로써 프로그램에 최적화를 제공합니다. 다른 사람들이 당신의 코드에 대해 당신과 협력할 때, 당신이 튜플을 사용하는 것은 당신이 그 값들의 시퀀스를 수정할 의도가 없다는 것을 그들에게 전달할 것입니다.

이 자습서에서는 튜플 인덱싱, 슬라이싱 및 연결, 사용 가능한 내장 함수 표시 등 튜플의 기본 기능을 다뤘습니다.