목록과 튜플의 차이점은 무엇입니까?
게시 됨: 2021-11-28튜플과 목록은 파이썬에서 사용되는 데이터 구조 유형입니다. 목록은 대괄호를 사용하여 단일 변수에 데이터를 저장하는 반면, 튜플은 괄호를 사용하여 하나의 변수에 데이터를 저장합니다. 두 구조 모두 여러 값과 개체를 저장하는 데 사용됩니다.
이 기사에서는 목록과 튜플의 주요 차이점을 자세히 알아보고 사용 사례를 살펴봅니다. 그러나 먼저 이들 사이의 핵심 유사점을 간단히 살펴보겠습니다.
- 튜플과 목록 모두에 모든 데이터 유형의 항목과 개체를 저장할 수 있습니다.
- 튜플과 목록 모두 각각의 인덱스를 사용하여 데이터에 액세스할 수 있습니다.
- 이러한 데이터 유형은 모두 다양한 데이터 항목을 컴파일하고 카탈로그화할 수 있습니다.
목차
파이썬 튜플 대 목록
1. 구문상의 차이점
목록과 튜플의 선언은 Python에서 항상 다릅니다. 목록은 '[]' 대괄호를 사용하여 선언되지만 튜플 선언은 '()'을 사용하여 만들어집니다.
다음은 Python에서 목록과 튜플을 선언하는 방법을 더 잘 이해하기 위한 예입니다.
list_num = [7,8,9,10]
tup_num = (10,11,13,14)
인쇄(목록 번호)
인쇄(tup_num)
이 시퀀스의 출력은 다음과 같습니다.
[7,8,9,10]
(10,11,13,14)
이 예에서는 7에서 10까지의 숫자를 수용하는 list_num이라는 변수가 정의되어 있습니다. 또한 출력이 대괄호로 묶인 것을 볼 수 있습니다. 그러나 tup_num으로 정의되고 10에서 14까지의 숫자를 보유하는 변수는 괄호를 사용하여 출력을 표시합니다.
Python은 생성된 항목의 유형을 이해하는 데 도움이 되는 type() 함수를 사용합니다.
인쇄(유형(tup_num))
인쇄(유형(목록_번호))
산출:
<클래스 '튜플'>
<클래스 '목록'>
2. 변경 가능성(변경 가능 대 변경 불가능)
튜플과 목록은 가변성 측면에서 모순됩니다. 튜플은 생성된 후에 수정하거나 변경할 수 없는 불변 구조입니다. 반대로 목록은 생성 후 쉽게 변경되거나 수정할 수 있는 변경 가능한 구조입니다.
불변의 특성 때문에 튜플만 사전의 키로 사용할 수 있습니다. 목록은 필요할 때 키로 사용할 수 없습니다.
3. 객체 변경(List vs Tuple)
목록을 변경하려는 시도가 생성되면 어떻게 되는지 알아보겠습니다.
이름 = [알렉스, 릭, 마틴]
이름 [0] = "록시"
참고 : 첫 번째 요소는 항상 1이 아닌 0으로 참조됩니다.
이제 다음 명령 후 출력이 어떻게 보이는지 살펴보겠습니다.
>>>이름
산출:
[록시, 릭, 마틴]
출력은 목록의 맨 처음 항목이 어떻게 변경되었는지 보여줍니다.
이제 튜플이 사용되면 결과가 어떻게 되는지 봅시다.
이름 = (알렉스, 릭, 마틴)
튜플의 항목이 다음을 사용하여 변경될 때
이름(0) = "록시"
출력은 다음과 같습니다.
TypeError: 'tuple' 개체는 항목 할당을 지원하지 않습니다.
이것은 튜플 데이터 구조가 나중에 변경된 객체를 지원하지 않는다는 것을 의미합니다. 따라서 목록만 수정할 수 있고 튜플은 수정할 수 없다는 결론을 내릴 수 있습니다.
4. 복사 대 재사용
튜플을 복사할 수 없습니다. 그 이유는 튜플의 불변 속성 때문입니다. 예를 들어, 튜플(tup_name)을 실행하면 자체적으로 복원된 것을 볼 수 있습니다.
예시:
이름 = ('알렌', '시리', '미카엘라')
copyNames = 튜플(이름)
인쇄(이름은 copyNames입니다)
여기서 출력은 "True"가 됩니다.
반대로 목록에 대해 동일한 작업을 시도하면(예제에 표시된 대로):
예시:
이름 = [ "알렌", " 시리 "' "미카엘라"]
copyNames = 목록(이름)
인쇄(이름은 copyNames입니다)
출력은 "거짓"으로 표시됩니다.
실제 출력을 위해서는 전체 이름을 복사하여 새 목록에 붙여넣어야 합니다.
5. 파이썬 튜플 대 목록 | 크기 차이
튜플의 불변 특성 때문에 Python은 상대적으로 오버헤드가 낮은 큰 블록 형태로 튜플 메모리만 할당합니다. 목록의 경우 Python은 더 작은 크기의 메모리 블록만 제공합니다. 결과적으로 튜플은 목록에 비해 메모리 양이 적습니다. 그러나 이것은 많은 항목이 관련될 때 튜플이 목록보다 훨씬 더 빠르게 사용된다는 것을 의미합니다.
6. 이기종 대 동종
튜플은 이질적인 다양한 유형의 요소를 저장할 수 있습니다. 반대로 목록은 동종인 동일한 변형의 기능이나 데이터를 저장할 수 있습니다.
그러나 이것은 의미론적 차이일 뿐입니다. 예를 들어 목록은 다양한 유형의 데이터를 저장할 수 있고 튜플은 같은 종류의 데이터를 저장할 수도 있습니다.
예시:
list_elements = ['알렌', 20, '메리']
tuple_elements = ('알렌', "메리", '알렉스')
목록에 숫자와 문자열의 조합이 있더라도 코드는 원활하게 실행됩니다.
7. 길이 차이
목록과 튜플도 길이와 크기가 다양합니다. 튜플의 길이는 다양하지만 튜플의 길이는 고정되어 있습니다. 따라서 한 번 정의되면 고정된 튜플의 길이와 달리 목록의 크기는 언제든지 변경할 수 있습니다.
예시:
list_names = ['알렌', '메리', '알렉스']
list_names.append("록시")
인쇄(목록_이름)
산출:
['알렌','메리','알렉스','록시']
목록이 관련될 때 append() 함수 대신 insert() 함수를 사용하여 정확한 출력을 얻을 수도 있습니다.
그러나 튜플 데이터 구조는 크기를 변경할 수 있는 방법을 제공하지 않습니다.
8. 사용 사례
다양한 상황에서 이러한 데이터 구조 중 적어도 하나는 잘 작동합니다. 일반적으로 데이터 구조가 사용되는 프로그램의 코더에 따라 다릅니다. 데이터 구조는 데이터 항목이 미래에 다시 쓰여질 것인지 여부에 따라 선택됩니다.
튜플은 다음과 같은 이유로 목록과 비교할 때 데이터 구조로서 훨씬 더 중요합니다.
- 목록 대신 튜플을 사용하면 정보를 변경하지 않도록 코더나 데이터 인터프리터에 알릴 수 있습니다.
- 튜플을 사용하여 키 없이 데이터를 복원할 수도 있습니다.
- 튜플은 Python의 사전과 동일합니다.
- 목록 안에 저장된 튜플은 읽기가 매우 쉽습니다.
튜플의 불변 및 해시 가능한 특성은 튜플을 사전을 완벽하게 대체합니다. 반면에 사전은 _hash_() 함수를 지원하지 않기 때문에 목록을 사용하여 사전을 대체할 수 없습니다.
예시:
key_val= {('알렉스', '용감한'):124} #유효
key_val = {['알렉스', '용감한']:124} #잘못된
9. 목록과 튜플 중첩
튜플과 목록은 서로 저장할 수 있습니다. 중첩된 튜플은 더 많은 튜플을 보유할 수 있습니다. 마찬가지로 중첩 목록에는 더 많은 목록이 있을 수 있습니다.
10. 디버깅
튜플은 목록과 비교할 때 더 광범위한 프로젝트에서 디버그하기가 훨씬 쉽습니다. 이것은 튜플의 불변 특성 때문입니다. 그러나 훨씬 적은 양의 데이터가 관련된 경우 항상 목록에 의존하는 것이 좋습니다. 튜플은 버그를 추적하기 어려운 목록과 달리 변경할 수 없기 때문에 추적하기가 훨씬 쉽습니다.
11. 기능 및 동작
Python에는 sorted, sum, all, min, max, lean 등과 같은 튜플 및 목록에 적용할 수 있는 몇 가지 유용한 기능이 있습니다.
연산과 관련하여 목록과 튜플에서 많은 유사점을 찾을 수 있습니다. 그러나 목록에는 튜플에는 없는 몇 가지 추가 기능이 있습니다. 이들은 항목 제거 및 저장과 함께 대부분 팝 및 삽입 작업입니다.
주요 내용
- 튜플은 목록보다 기능이 적습니다.
- 튜플의 구조는 변경할 수 없지만 목록의 구조는 변경 가능합니다.
- 튜플은 고정 길이로 제공되지만 목록의 길이는 다를 수 있습니다.
- 목록의 구문은 "[]" 대괄호로 표시되는 반면 튜플 구문은 "()" 괄호의 형태로 표시됩니다.
- 튜플은 목록과 비교할 때 더 적은 메모리를 사용합니다.
- 튜플 데이터 구조는 액세스 요소가 포함될 때 가장 좋습니다.
- 함수 목록은 삭제 및 삽입의 특정 작업을 수행하는 데 더 좋습니다.
- 튜플에 관련된 반복은 목록에 관련된 반복보다 빠릅니다.
- 목록에는 여러 빌드 메서드가 있을 수 있지만 튜플에는 메서드가 없습니다.
upGrad의 18개월 데이터 과학 석사를 통해 Python의 핵심 및 고급 개념에 대해 자세히 알아보십시오. 리버풀 존 무어 대학 및 IIT 방갈로르와 협력하여 프로그램. 자유롭게 사용할 수 있는 업계 최고의 교수진, 500시간 이상의 학습 자료, 의심 해결 수업을 통해 학생들은 Python 및 기타 데이터 과학 기초를 마스터하여 그에 따라 경력을 조정할 수 있는 기회를 갖게 됩니다. 또한 이 프로그램은 Tableau, MySQL, Excel, MongoDB 등과 같은 14개 이상의 언어 및 도구에 대한 역량을 개발하는 데 도움이 됩니다.
그러니 주저하지 마십시오. 오늘 저희에게 연락하십시오!
튜플이나 목록을 언제 사용합니까?
데이터 항목이 읽기 전용이어야 하는 경우 튜플을 사용해야 합니다. 데이터는 절대 변경되지 않는 데이터의 가용성이 보장되기 때문에 튜플에서 일정하게 유지됩니다.
그러나 목록은 매우 변경 가능합니다. 따라서 그 안의 데이터는 항상 변경될 수 있습니다. 목록에 항목을 이동, 전환, 삭제 및 추가하는 것은 매우 유연합니다. 프로그램 주기의 나중 단계에서 데이터를 수정해야 할 때 가장 잘 사용됩니다.
목록과 비교할 때 튜플이 더 빠릅니까?
예, 튜플을 만드는 것은 목록을 만드는 것보다 훨씬 적은 시간이 걸립니다. 목록이 만들어지면 둘 이상의 메모리 블록에 액세스해야 합니다. 튜플의 요소는 제거 및 교체할 수 없는 반면 목록의 기능은 프로그램 주기 동안 여러 번 변경할 수 있기 때문입니다.
실생활에서 튜플과 목록은 어디에 사용됩니까?
특정 레시피를 사용하여 특정 요리를 요리하는 데 필요한 단계를 저장하는 목록을 만들 수 있습니다. 목록에는 데이터에 대한 순차적 액세스가 포함됩니다. 따라서 순서대로 단계에 액세스할 수 있습니다. 반면에 Tuple은 거주지의 경도 또는 위도와 같은 데이터를 저장하는 데 사용할 수 있습니다. 튜플은 미리 정의된 데이터 모음이기 때문입니다. 동일한 튜플을 사용하여 다른 장소의 위치 좌표를 저장할 수도 있습니다.