차이점이 뭐야?
튜플 /리스트의 장단점은 무엇입니까?
답변
튜플은 불변이지만, 사용법을 안내하는 의미 론적 차이도 있습니다. 튜플은 이기종 데이터 구조 (즉, 항목의 의미가 다름)이며 목록은 동종 시퀀스입니다. 튜플은 구조를 가지며 목록은 순서를 갖습니다.
이 구별을 사용하면 코드를보다 명확하고 이해할 수 있습니다.
한 가지 예는 책에서 위치를 참조하기위한 페이지와 줄 번호의 쌍입니다. 예 :
my_location = (42, 11) # page number, line number
그런 다음이를 사전의 키로 사용하여 위치에 메모를 저장할 수 있습니다. 반면에 목록은 여러 위치를 저장하는 데 사용될 수 있습니다. 당연히 목록에서 위치를 추가하거나 제거하고 싶을 수 있으므로 목록을 변경할 수 있습니다. 반면에 기존 위치에서 항목을 추가하거나 제거하는 것은 의미가 없으므로 튜플은 변경할 수 없습니다.
예를 들어 페이지 라인을 반복 할 때 기존 위치 튜플 내에서 항목을 변경하려는 상황이있을 수 있습니다. 그러나 튜플 불변성은 각 새 값에 대해 새 위치 튜플을 작성하도록합니다. 이것은 그 자체로는 불편한 것처럼 보이지만 이와 같은 불변의 데이터를 사용하는 것은 가치 유형과 기능적 프로그래밍 기술의 초석이며 상당한 이점을 가질 수 있습니다.
이 문제에 대한 몇 가지 흥미로운 기사가 있습니다. 예를 들어 “Python 튜플은 상수 목록이 아닙니다” 또는 “Python의 튜플 vs. 목록 이해”등이 있습니다. 공식 파이썬 문서 에도 언급 되어 있습니다
“Tuples는 불변이며 일반적으로 이기종 시퀀스를 포함합니다 …”.
Haskell 과 같은 정적으로 유형이 지정된 언어 에서 튜플의 값은 일반적으로 다른 유형을 가지며 튜플의 길이는 고정되어야합니다. 목록에서 값은 모두 같은 유형이며 길이는 고정되어 있지 않습니다. 따라서 그 차이는 매우 분명합니다.
마지막으로 파이썬 에는 namedtuple 이 있는데, tuple은 이미 구조를 가지고 있기 때문에 의미가 있습니다. 이것은 튜플이 클래스와 인스턴스에 대한 경량 대안이라는 아이디어를 강조합니다.
답변
리스트와 튜플의 차이점
-
오자
someTuple = (1,2) someList = [1,2]
-
크기
a = tuple(range(1000)) b = list(range(1000)) a.__sizeof__() # 8024 b.__sizeof__() # 9088
튜플 연산의 크기가 작기 때문에 조금 더 빠르지 만 많은 요소가있을 때까지 언급하지는 않습니다.
-
허용 된 작업
b = [1,2] b[0] = 3 # [3, 2] a = (1,2) a[0] = 3 # Error
또한 요소를 삭제하거나 튜플을 정렬 할 수 없음을 의미합니다. 그러나 튜플을 변경할 수 없기 때문에 실제로 요소를 추가하는 것이 아니라 새 튜플을 만들고 있으므로 ID가 변경 된다는 유일한 차이점으로 목록과 튜플 모두에 새 요소를 추가 할 수 있습니다
a = (1,2) b = [1,2] id(a) # 140230916716520 id(b) # 748527696 a += (3,) # (1, 2, 3) b += [3] # [1, 2, 3] id(a) # 140230916878160 id(b) # 748527696
-
용법
리스트는 변경 가능하기 때문에 튜플을 사용할 수있는 반면 사전에서는 키로 사용할 수 없습니다.
a = (1,2) b = [1,2] c = {a: 1} # OK c = {b: 1} # Error
답변
산책을 갔다면 (x,y)
튜플 에서 언제든지 좌표를 확인할 수 있습니다 .
여행을 기록하려면 몇 초마다 위치를 목록에 추가 할 수 있습니다.
그러나 당신은 다른 방법으로 그것을 할 수 없었습니다.
답변
주요 차이점은 튜플은 변경 불가능하다는 것입니다. 즉, 튜플을 만든 후에는 값을 변경할 수 없습니다.
따라서 값을 변경해야 할 경우 List를 사용하십시오.
튜플의 이점 :
- 약간의 성능 향상.
- 튜플은 변경할 수 없으므로 사전에서 키로 사용할 수 있습니다.
- 변경할 수 없다면 다른 사람도 할 수 없습니다. 다시 말해 API 함수에 대해 걱정할 필요가 없습니다.
답변
리스트는 변경 가능합니다. 튜플은 없습니다.
에서 docs.python.org/2/tutorial/datastructures.html
튜플은 변경할 수 없으며 일반적으로 압축 풀기 (이 섹션의 뒷부분 참조) 또는 인덱싱 (또는 명명 된 튜플의 경우 속성 별)을 통해 액세스되는 이기종 시퀀스의 요소를 포함합니다. 목록은 변경 가능하며 해당 요소는 일반적으로 동종이며 목록을 반복하여 액세스합니다.
답변
그건 언급 차이가 크게 의미이다 : 사람들이 튜플 및 목록은 다른 정보를 나타내는 것으로 기대합니다. 그러나 이것은 지침보다 더 나아갑니다. 일부 라이브러리는 전달 된 내용에 따라 실제로 다르게 작동합니다. NumPy를 예로 들어 보겠습니다 ( 더 많은 예제를 요구하는 다른 게시물 에서 복사했습니다 ).
>>> import numpy as np
>>> a = np.arange(9).reshape(3,3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> idx = (1,1)
>>> a[idx]
4
>>> idx = [1,1]
>>> a[idx]
array([[3, 4, 5],
[3, 4, 5]])
요점은 NumPy가 표준 라이브러리의 일부는 아니지만 주요 Python 라이브러리이며 NumPy 목록과 튜플 내에서 완전히 다른 것입니다.
답변
리스트는 루핑을위한 것이고 튜플은 구조를위한 것 "%s %s" %tuple
입니다.
목록은 일반적으로 동종이고 튜플은 일반적으로 이종입니다.
리스트는 가변 길이, 튜플은 고정 길이입니다.