PYTHON 데이터 구조 및 알고리즘

파이썬은 머신러닝, 인공지능, 데이터 과학 등 많은 산업 분야에 사용된 언어다.python을 충분히 이용하기 위해서 일부 데이터는 사례를 만들고 가용성을 높이는 데 사용할 수 있다.이 데이터들은 반드시 잘 저장되고 검색하기 쉬워야 한다.이런 데이터를 저장하고 조작하는 과정은 바로 우리가 말한 데이터 구조이다.알고리즘은 우리가 각종 방식으로 데이터를 조작하는 것을 돕는 도구다.
python에는 두 가지 유형의 데이터 구조가 있다.데이터 구조 및 사용자 정의 데이터 구조 내장
###내장형 데이터 구조
이것들은python에서 미리 불러오는 데이터 구조입니다.그것들은 사전, 목록, 집합, 원조를 포함한다.

1. 명세서
  • 이들은 논리적인 순서에 따라 각종 유형의 데이터를 저장하는 데 쓰인다.목록의 모든 요소에는 색인이라는 주소가 있습니다.인덱스 값은 0에서 시작하여 마지막 요소인 양의 인덱스까지 지속됩니다.마이너스 인덱스는 -1에서 시작하여 마지막 요소에서 첫 번째 요소에 접근할 수 있습니다.목록을 만들려면 대괄호[]를 사용합니다.목록을 더 잘 이해할 수 있도록 예시 프로그램을 사용하자.
  • my_list=[] #create an empty list
    my_list=[1,3,4, 'example ',3.142]
    print(my_list) #prints (1,3,4, 'example' , 3.142)
    
    목록을 조작할 수 있는 방법은 매우 많다. 예를 들어 원소를 추가하고, 원소를 삭제하고, 원소에 접근할 수 있다.
    요소 추가
  • append() 함수는 모든 원소를 하나의 원소로 조합합니다.
  • extend () 함수는 원소를 목록에 하나씩 추가합니다.
  • insert() 함수는 색인 값의 요소를 추가하고 목록의 크기를 증가시킵니다.
  • my_list=[1,2,3]
    print(my_list)#outputs
    my_list.append([66, 67, 'another example'])
    print(my_list)#outputs [1,2,3 [66,67, 'another example']]
    my_list.insert(2, 'insert example')
    print(my_list)#outputs [1,2, 'insert example',3 [66,67, 'another example']]
    
    요소 삭제
    요소를 삭제하려면 Python에 내장된del 키워드를 사용하지만 내용을 반환하지 않습니다.
    my_list=[1,2,3, 'example',69,'example2', 3.142]
    print(my_list)
    del my_list[5]#removes element index 5 from list
    print(my_list)#outputs[1,2,3, 'example',69, 3.142]
    my_list.remove('example')#removes element with the value 'example' from the list
    print(my_list)#outputs [1,2,3,69, 3.142]
    my_list.pop(3)#pops element with index 3 from the list
    print(my_list)#output  [1,2,3, 3.142]
    my_list.clear()#clears the list
    print(my_list)#outputs an empty list
    
    목록에서 요소 액세스
    색인 값을 전달하여 필요한 색인에 있는 요소에 접근합니다.
    #accessing elements
    my_list=[1,2,3, 'example',69,'example2', 3.142, 678, 'last element']
    for element in my_list: #access elements one by one
        print(element)
    print(my_list)#access the whole list
    print(my_list[2:5])#access element from index 2 to 5
    print(my_list[-1])#access list in reverse
    
    이 bsic 함수를 제외하고는 목록의 길이를 표시하는len()과 목록을 정렬하는sort() 등 다른 함수도 있다.

    다원 그룹
    원조는 목록과 유사하지만, 질서정연하고 변경할 수 없는 집합이다.원조를 만들려면 괄호()를 사용합니다.
    예.
    #create a tuple
    my_tuple=(1,44,3.142, 'tuple example')
    print(my_tuple)
    
    대부분의 모듈을 조작하는 함수는 내가 위에서 보여준 목록과 유사하지만 다음과 같은 예외가 있다.
    원조를 추가하려면 + 기호를 사용합니다
    my_tuple=(1,44,3.142, 'tuple example')
    print(my_tuple)
    my_tuple=my_tuple+(4,4,6,'another tuple')#append a tuple
    print(my_tuple)#output (1, 44, 3.142, 'tuple example', 4, 4, 6, 'another tuple')
    

    사전.
    데이터 값은 사전을 사용하여 키:value 쌍에 저장됩니다.
    사전은 질서정연하고 변경할 수 있으며 중복을 허용하지 않는 집합이다.
    중괄호나 dict () 함수를 사용하여 사전을 만들 수 있습니다.사전을 사용할 때 키 값 쌍을 추가해야 합니다.
    자전을 쓰다
    _dict={}
    dict['one']='This is one'
    dict[2]='This is two'
    tinydict={'name':'John','code':'6000', 3:'zendaya'}
    print (dict['one'])
    print (dict[2])
    print (tinydict)#outputs {'name': 'John', 'code': '6000', 3: 'zendaya'}
    
    tinydict
    print(tinydict.keys())# outputs dict_keys(['name', 'code', 3])
    print(tinydict.values())#outputs dict_values(['John', '6000', 'zendaya'])
    
    또는
    my_dict={1:'name', 2:'age'}
    print(my_dict)#ouputs {1:'name', 2:'age'}
    
    사전에서 값을 변경하고 추가하는 것은 키로 이루어집니다.
    tinydict['code']=  7000#changes the element to 7000
    print(tinydict)
    tinydict[4]='casie'# adds a new pair entry
    print(tinydict)
    
    * 값 삭제
    *
    del tinydict['name']#deletes the element with that value
    print(tinydict) #outputs {'code': 7000, 3: 'zendaya', 4: 'casie'
    tinydict.pop(4)  #removes element with that value
    print(tinydict)#outputs{'code': 7000, 3: 'zendaya'}
    
    키를 사용하여 요소 액세스
    print(tinydict['code']) #outputs element with key ''code
    

    설정
    컬렉션은 순서가 없고 변경할 수 없으나 항목을 삭제하고 새 항목을 추가할 수 있는 고유하고 인덱스되지 않은 컬렉션입니다.그것들은 괄호로 만든 것이다.
    myset={3,3,3,4,4,5,5,5,23,34,23,65,56,77}
    print(myset)#outputs{65, 34, 3, 4, 5, 77, 23, 56}
    
    집합에서 중복 문자는 하나만 출력됩니다.
    요소 추가
    한 번에 하나의 요소만 추가할 수 있습니다.
    my_set.add('zendaya')
    print(my_set)#outputs {65, 34, 3, 4, 5, 77, 'zendaya', 23, 56}
    
    조종 집합
  • union() 함수는 두 집합의 데이터를 연결한다.
  • intersection() 함수는 두 집합에 존재하는 데이터만 되돌려줍니다.
  • 함수의 역할은 두 집합에서 데이터를 삭제하고 전달된 집합에서만 데이터를 출력하는 것이다.
  • symmetric difference () 함수는 difference () 함수와 같은 동작을 수행하지만, 두 집합에 존재하는 데이터를 출력합니다.
  • my_set={65, 34, 3, 4, 5, 77, 'zendaya', 23, 56}
    print(my_set)
    my_set2={3.142,33,44, 3,3,5,5, 4,56, 'new zendaya', 'zendaya'}
    print(my_set2)
    #manipulating sets
    print(my_set.union(my_set2))#outputs {'zendaya', 65, 34, 3, 4, 5, 33, 3.142, 44, 77, 'new zendaya', 23, 56}
    print(my_set.intersection(my_set2)) #outputs {'zendaya', 3, 4, 5, 56}
    print(my_set.difference(my_set2))#outputs {65, 34, 77, 23}
    print(my_set.symmetric_difference(my_set2))#outputs {33, 65, 3.142, 'new zendaya', 34, 44, 77, 23}
    

    **
    2. 사용자 정의 데이터 구조**
    파이썬 사용자는 자신의 기능을 완전히 제어할 수 있는 데이터 구조를 만들 수 있다.가장 흔히 볼 수 있는 데이터 구조는 창고, 대기열, 트리, 체인 테이블 등이며, 이 모든 것은 다른 프로그래밍 언어에서 사용할 수 있다.
    줄을 서다
    대기열은 선입선출(FIFO) 원칙을 바탕으로 하는 선형 데이터 구조로 선입선출된 데이터가 먼저 접근된다는 것을 의미한다.그것은 대기열의 머리와 끝에서 실행할 수 있는 작업, 즉 앞뒤와 등 대등을 포함하는 그룹 구조를 사용한다.대기열 생성 및 엑시트 작업에는 어셈블리 추가 및 삭제, 어셈블리 액세스가 포함됩니다.대열은 교통 체증과 운영체제의 작업 스케줄링 등을 처리하는 데 네트워크 버퍼로 사용된다.

    쌓아올리다
    스택은 후진선출(LIFO) 원칙을 바탕으로 하는 선형 데이터 구조로 마지막으로 삽입된 데이터가 첫 번째로 접근된 데이터라는 것을 의미한다.이것은 밀어냄 (추가) 요소, 팝업 (삭제) 요소, 창고 맨 위에서만 접근하는 등 그룹 구조를 사용하여 구축된 것입니다.이 위쪽은 창고의 현재 위치를 가리키는 지침입니다.컴파일러 프로그래밍, 단어 반전, 단어 편집기의 취소 시스템 및 기타 응용 프로그램이 널리 사용되고 있습니다.

    그림 1.
    그래픽은 데이터를 정점(노드) 및 모서리(연결)(모서리) 형식으로 저장하는 데 사용됩니다.실제 세계 지도의 가장 정확한 표현은 도형에서 찾을 수 있다.그들은 서로 다른 데이터 점(노드라고 부른다) 사이의 거리를 계산하는 각종 대가를 통해 최소 경로를 발견한다.

    네스트된 목록
    연결 목록은 포인터를 통해 연결된 선형 데이터 구조이지 순서대로 저장하는 것이 아니다.체인 테이블 노드는 데이터와next라는 바늘로 구성되어 있습니다.이러한 구조는 이미지 뷰어, 음악 플레이어 및 기타 응용 프로그램에 가장 많이 사용된다.

    배열 및 목록
    하나의 예외를 제외하고, 수조와 목록은 같은 구조이다.목록은 이기종 데이터 요소를 저장할 수 있지만, 진열은 동질 구성 요소만 저장할 수 있습니다.

    좋은 웹페이지 즐겨찾기