Python 3의 튜플 이해
소개
튜플은 변경할 수 없거나 변경할 수 없는 순서가 지정된 요소 시퀀스인 데이터 구조입니다. 튜플은 변경할 수 없기 때문에 해당 값을 수정할 수 없습니다. 다음은 네 가지 요소로 구성된 예제 튜플입니다.
Example Tuplecoral = ('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])
Outputpillar coral
이 튜플의 색인 번호 범위는 위의 표에 표시된 대로 0
-3
입니다. 따라서 항목을 개별적으로 호출하려면 다음과 같이 인덱스 번호를 참조합니다.
coral[0] = 'blue coral'
coral[1] = 'staghorn coral'
coral[2] = 'pillar coral'
coral[3] = 'elkhorn coral'
3
보다 큰 인덱스 번호로 튜플 coral
을 호출하면 유효하지 않으므로 범위를 벗어납니다.
print(coral[22])
OutputIndexError: tuple index out of range
양수 인덱스 번호 외에도 -1
에서 시작하여 튜플의 끝에서 거꾸로 세어 음수 인덱스 번호가 있는 튜플의 항목에 액세스할 수도 있습니다. 이는 긴 튜플이 있고 튜플의 끝 부분에 있는 항목을 정확히 지정하려는 경우에 특히 유용합니다.
동일한 튜플 coral
의 경우 음수 인덱스 분석은 다음과 같습니다.
‘blue coral’ | ‘staghorn coral’ | ‘pillar coral’ | ‘elkhorn coral’ |
---|---|---|---|
-4 | -3 | -2 | -1 |
따라서 음수 색인 번호를 사용하여 항목 blue coral
을 인쇄하려면 다음과 같이 할 수 있습니다.
print(coral[-4])
Outputblue coral
+
연산자를 사용하여 튜플의 문자열 항목을 다른 문자열과 연결할 수 있습니다.
print('This reef is made up of ' + coral[1])
OutputThis 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]
에서와 같이 슬라이스를 생성할 때 첫 번째 인덱스 번호는 슬라이스가 시작되는 위치(포함)이고 두 번째 인덱스 번호는 슬라이스가 끝나는 위치(제외)입니다. 위의 예에서 위치에 있는 항목, 1
및 2
는 인쇄되는 항목입니다.
목록의 양쪽 끝을 포함하려면 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)
이 기능은 예를 들어 최소 또는 최대 컬렉션 길이를 적용해야 하거나 시퀀스 데이터를 비교해야 하는 경우에 유용합니다.
튜플 kelp
및 numbers
의 길이를 인쇄하면 다음과 같은 결과가 표시됩니다.
print(len(kelp))
print(len(numbers))
Output4
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))
Output95.59
max()
함수는 튜플에서 가장 높은 값을 반환했습니다.
마찬가지로 min()
함수를 사용할 수 있습니다.
print(min(more_numbers))
Output11.12
여기에서 가장 작은 플로트가 튜플에서 발견되어 출력되었습니다.
len()
함수와 마찬가지로 max()
및 min()
함수는 많은 것을 포함하는 튜플로 작업할 때 매우 유용할 수 있습니다. 가치.
튜플과 리스트의 차이점
튜플이 목록과 다른 주된 방법은 수정할 수 없다는 것입니다. 즉, 튜플에서 항목을 추가하거나 제거할 수 없으며 튜플 내에서 항목을 바꿀 수 없습니다.
그러나 2개 이상의 튜플을 연결하여 새 튜플을 형성할 수 있습니다.
coral
튜플을 살펴보겠습니다.
coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
푸른 산호
항목을 검은 산호
라는 다른 항목으로 바꾸고 싶다고 가정해 보겠습니다. 목록과 동일한 방식으로 해당 출력을 변경하려면 다음을 입력하십시오.
coral[0] = 'black coral'
출력으로 오류가 표시됩니다.
OutputTypeError: 'tuple' object does not support item assignment
튜플은 수정할 수 없기 때문입니다.
튜플을 생성하고 실제로 필요한 것이 목록이라고 결정하면 이를 목록으로 변환할 수 있습니다. 튜플을 목록으로 변환하려면 list()
를 사용하면 됩니다.
list(coral)
이제 coral
데이터 유형은 목록이 됩니다.
coral = ['blue coral', 'staghorn coral', 'pillar coral']
괄호가 대괄호로 바뀌었기 때문에 튜플이 리스트로 변환된 것을 볼 수 있습니다.
마찬가지로 tuple()
을 사용하여 목록을 튜플로 변환할 수 있습니다.
\Python 3에서 데이터 유형을 변환하는 방법\을 읽어 데이터 유형 변환에 대해 자세히 알아볼 수 있습니다.
결론
튜플 데이터 유형은 수정할 수 없는 순차 데이터 유형으로, Python이 처리하는 목록보다 다소 빠른 유형이 됨으로써 프로그램에 최적화를 제공합니다. 다른 사람들이 당신의 코드에 대해 당신과 협력할 때, 당신이 튜플을 사용하는 것은 당신이 그 값들의 시퀀스를 수정할 의도가 없다는 것을 그들에게 전달할 것입니다.
이 자습서에서는 튜플 인덱싱, 슬라이싱 및 연결, 사용 가능한 내장 함수 표시 등 튜플의 기본 기능을 다뤘습니다.