파이썬 목록 데이터 구조는 방법의 종류입니까?
목록은 배열과 연결리스트를 얻을 수있다 : 그는이 책은 말한다.
주문 테이블은 어떻게입니까? 일반 순서 표 배열이다.
선형 목록은 사용자가 어떤 위치에 삽입, 삭제 권한 및 요소를 대체 할 수있는 컬렉션이다.
리스트의 구현은 배열이나리스트 기반 구조에 기초한다. 리스트 반복자를 사용하는 경우, 빠른 싱글 링크드리스트 구조에 비해리스트 구조를 더블 링크.
요소들의 정렬 된 목록은 오름차순 또는 내림차순으로 배열 된 요소에 따라 항상.
구현 세부 사항은
파이썬 영어 이름 목록에서 목록, 그것은 쉽게 다른 언어 목록을 표준 라이브러리를 혼동하는 것이 일반적 (C ++, 자바 등) 만들기. 사실 CPython의 목록의 목록이 아닙니다 (이해하기 쉽게 영어로 수 : 목록에 파이썬은 목록이 아닙니다). CPython에있어서, 목록은 가변 길이 어레이로서 구현된다.
"파이썬 고급 프로그래밍 (2 판)"을 참조하십시오
상세보기에서 파이썬리스트는 이들 다른 객체에 대한 참조의 배열의 연속이다. 어레이의 길이에 대한 포인터는리스트의 헤드 구조에 저장된다. 이것은 모든 시간을 추가하거나 표준 크기 (재 할당)의 필요성에 대한 참조의 배열로 구성 요소를 삭제 있다는 것을 의미한다. 이러한 배열을 만드는, 그래서 작업은 항상 배열의 크기를 변경할 필요가 없습니다 때 다행스럽게도, 파이썬은 지수 분포를 사용합니다. 그러나,이 이유를 추가하거나 제거하기 때문에 요소는 덜 복잡 상각.
불행하게도, 파이썬 "작은 가격"의 정상적인 체인 계산의 복잡성에 다른 작업이 상대적으로 높다.
임의의 위치에서 요소 삽입 (I, 아이템) 방법 list.insert 사용 - O 복잡성 (N)
list.pop I 또는 list.remove (값)를 사용하여 원소를 제거 - O의 복잡성 (N)
의 알고리즘 효율 목록
시간 복잡도 측정하는 데 사용할 수 있습니다 :
인덱스 () O (1)
O를 추가 (1)
팝 () O (1)
팝 (I) O (N)
에 삽입 (I, 아이템) O (n)은
델 연산자 O (N)
반복 O (N)가
포함 ( O)에서 (N)
O (K) : Y (X)], 슬라이스를 얻을
델 슬라이스 O (N)
(N + k)를 설정 슬라이스 O를
N O를 (후진)
O (K을 연결)
정렬 O (nlogn)
NK (곱 O를 )
낮은 값은 괄호 효율성 이여 나타낸다
튜플리스트
:리스트 튜플 간의 차이는 명백하다
목록은 표준 규격 (재 할당) 될 수있는 동적이다
튜플 번 변경할 수없는 생성 불변.
(C) 상기리스트 내의 튜플과 시간의 많은 요소를 들어, 실현이 매우 비슷
빨리 발견되지 튜플리스트의 이유로보다, 해당 개체에 대한 포인터 배열이다.
그러나 작은 물체입니다, 튜플 객체 풀 너무 작아서, 반복 사용 튜플도 도움이 될 것입니다.
튜플해야하는 이유, 합리성이 많이 있습니다.
실제 상황은 실제로 이러한 이차원 지리적 좌표 많은 고정 길이리스트 구조있다;
또한 튜플 요소 자연적 판독 전용 속성을 부여.
빠른 사람들의 목록보다 더 튜플 아마 파이썬 튜플과 비유의 목록을 배열로와 C ++의 목록입니다 생각합니다.
관련 문서
HTTP : 다이브 속으로 파이썬 내부 구현 나열 //python.jobbole.com/82549/
은 https : //blog.csdn.net/siyue0211/article/details [파이썬]리스트, 튜플, 사전의 기본 세부 사항을의 설정 / 80560783
파이썬 목록 : HTTPS : 초보자를 운영하고 내부 구현하는 방법을 알고 있어야합니다 //mp.weixin.qq.com/s/IkFak4iYYqW7u61P7eu22g
파이썬 연구 노트 - 내부 구현을 나열 : HTTPS : //www.jianshu.com/p/cd75475168ae
파이썬은 기본 실행에서 알 수 : HTTPS : //www.csdn.net/article/2015-05-28/2824795