저는 파이썬에 관한 튜토리얼을 통해 작업 중이며 특정 상황에서 사용할 데이터 유형/구조를 결정하려고하는 위치에 있습니다.파이썬에서 사용할 데이터 유형을 어떻게 알 수 있습니까?
배열, 목록, 사전 및 튜플의 차이는 분명하지 않습니다.
당신은 어느 쪽이 적절한 지 어떻게 결정합니까 - 현재의 이해로는 저들을 전혀 구별하지 못합니다 - 그들은 똑같은 것처럼 보입니다.
각각의 이점/일반적인 사용 사례는 무엇입니까?
저는 파이썬에 관한 튜토리얼을 통해 작업 중이며 특정 상황에서 사용할 데이터 유형/구조를 결정하려고하는 위치에 있습니다.파이썬에서 사용할 데이터 유형을 어떻게 알 수 있습니까?
배열, 목록, 사전 및 튜플의 차이는 분명하지 않습니다.
당신은 어느 쪽이 적절한 지 어떻게 결정합니까 - 현재의 이해로는 저들을 전혀 구별하지 못합니다 - 그들은 똑같은 것처럼 보입니다.
각각의 이점/일반적인 사용 사례는 무엇입니까?
튜플이 처음입니다. 이들은 수정할 수없는 목록과 같은 것들입니다. 튜플의 내용을 변경할 수 없으므로 튜플을 사전의 키로 사용할 수 있습니다. 그것은 내 생각에 그들에게 가장 유용한 곳입니다. 예를 들어 당신이 item = ["Ford pickup", 1993, 9995]
같은 목록을 가지고 있고 당신은 당신이 같은 시도 할 수있는 가격 작은 메모리 데이터베이스를 만들려면 :
ikey = tuple(item[0], item[1])
idata = item[2]
db[ikey] = idata
목록을 배열이나 벡터 다른 프로그래밍 언어와 같은 것 같다 Python에서 동일한 유형의 것들에 보통 사용됩니다. 그러나 그들은 같은 목록에 여러 가지 유형의 것을 넣을 수 있다는 점에서보다 융통성이 있습니다. 일반적으로 다른 목록의 단일 목록 요소에 전체 목록을 넣을 수 있기 때문에 가장 융통성있는 데이터 구조이지만 실제 데이터를 처리하려면 충분히 효율적이지 않을 수 있습니다.
a = [1,"fred",7.3]
b = []
b.append(1)
b[0] = "fred"
b.append(a) # now the second element of b is the whole list a
사전은 종종 목록처럼 많이 사용되지만 이제는 수정 불가능한 것을 사전 색인으로 사용할 수 있습니다. 그러나 목록과 달리 사전은 자연 순서가 아니기 때문에 사전에 정렬 할 수 없습니다. 물론 dict이 Ordered Dictionary처럼 동작하도록 정렬 된 목록과 사전을 통합하는 고유 한 클래스를 만들 수 있습니다. Python Cookbook 사이트에 예제가 있습니다.
c = {}
d = ("ford pickup",1993)
c[d] = 9995
배열은 재정 중장비 데이터를하고있는 경우에 대한 비트 수준에 가까워지고있다 그리고 당신은 목록이나 사전의 주름 장식을하지 않습니다. 그들은 과학적 응용의 외부에서 자주 사용되지 않습니다. 필요할 때까지 알리십시오.
목록 및 Dicts는 파이썬 데이터 저장소의 실제 작업자입니다.
개체의 시퀀스 인 목록과 달리 튜플을 수학적 튜플 (쌍, 트리플 등)에 가장 직접적으로 추가한다고 덧붙입니다. 따라서 한 항목 (예 : x 및 y 좌표)을 구성하는 항목의 모음이 있고 개념적으로 개별 항목 인 경우 목록을 표시 할 때 튜플을 사용하십시오. –
속도/효율성이 정말로 필요합니까? 다음 순수하고 간단한 dict로 가십시오. 이 같은 요소를 계산하기위한
제일 유형은 사용할 데이터 유형을 결정하려면 어떻게 보통 defaultdict
from collections import defaultdict
s = 'asdhbaklfbdkabhvsdybvailybvdaklybdfklabhdvhba'
d = defaultdict(int)
for c in s:
d[c] += 1
print d['a'] # prints 7
defaultdict가 일반 dict보다 나은 이유는 무엇입니까? –
defaultdict는 dict에없는 키에 대한 기본값을 만듭니다. int의 경우 기본값은 0입니다. 이렇게하면 처음으로 검색하지 않아도되고 항목이 사전에 기록됩니다. –
나는이 질문을 상당히 수정했기 때문에 새로운 독자에게는이 대답이 문맥에 어긋나게 보일 수 있습니다. 그것은 원래 질문을위한 좋은 하나였습니다! –
입니까? 간편 :
사용할 수있는 것을보고 원하는 것을 선택하십시오. 그리고 하나가 없다면, 당신은 하나를 만듭니다.
이 경우 dict은 매우 분명한 해결책입니다.
+1. 두 번째 단락은 정확하게 여기에 맞는 답입니다. –
개인 : I m ostly 목록 및 사전 사용. 이것은 대부분의 경우를 만족시키는 것으로 보입니다.
간혹 : 튜플을 사용하면 요소를 페어링하거나 일치시킬 수 있습니다. 게다가, 나는 그것을 실제로 사용하지 않는다.
그러나 : 나는 핵심 "효율성"모든 바이트 모든 메모리/나노초이 문제로 드릴 다운 할 필요가 없습니다 높은 수준의 스크립트를 작성합니다. 나는 대부분의 사람들이 이것을 깊이 파고 들어야한다고 생각하지 않는다.
"앞으로 기울고있다"? 대안은 무엇입니까? 어떤 다른 데이터 구조를 고려할 것입니까? 자신이 갖고있는 진정한 질문에 대한 통찰력을 제공해주십시오. 사전을 생각하는 것이 옳지 않은 이유는 무엇입니까? –
주로 중괄호가 있고 좋은 이름을 가졌기 때문에 그것을 골랐기 때문에 주로. 어떤 것을 사용할 지 어떻게 결정합니까? :) –
나는 아직도 질문을받지 않는다. "결정하다"보다 구체적이거나 구체적인 것을 제공 할 수있는 방법이 있습니까? 너 뭐 찾고있어? 디자인 튜토리얼? 알고리즘? 데이터 구조? 자신이 생각하는 선택에 대한 몇 가지 세부 사항으로 질문을 업데이트 할 수 있습니까? 왜 사전에 의심이 가는지 설명해 주시겠습니까? –