코리아IT

240313

이광제 2024. 3. 13. 17:46

컬렉션 타입

여러 개의 데이터 항목을 하나의 단위로 관리할 수 있게 해주는 데이터 구조를 의미함. 여러 개의 데이터를 하나의 변수에 저장하고 , 관리할 수 있게 해주며, 파이썬에서는 리스트, 튜플, 세트, 딕셔너리 등이 기본적인 컬렉션 타입에 속함.

 

리스트

파이썬에만 있는 자료구조로 여러 값들을 하나의 변수에 저장하고 관리할 수 있게 해주는 순차적인 자료구조임

   

1. 생성

    - 대괄호를 사용하여 생성하며 내부에 포함된 각 항목들은 쉼표로 구분됨.

 

    - 리스트 안에 구분된 공간에 각자 원하는 형태로 저장가능.(정수, 실수, 문자열, 불)

 

2. 인덱싱

    - 리스트의 각 항복은 위치(인덱스) 가지고 있으며, 인덱스를 사용하여 접근할 수 있음.(인덱스는 0부터 시작)

 

    - 리스트 안에 리스트도 인덱싱이 가능함.

 

3. 슬라이싱

    - 리스트에서 일부분(범위를 지정하여) 추출이 가능함.

 

4. 항목 수정 가능

    - 리스트 항목들은 원하는 항목으로 수정, 추가, 삭제가 가능함.

 

    - 슬라이싱을 이용하여 리스트 형태의 항목을 추가하면 리스트는 풀리고 항목만 포함됨.

 

    - 인덱싱을 이용하여 리스트 형태의 항목을 추가하면 리스트안에 리스트 형태를 유지한 상태로 포함됨.

 

    - 리스트에서 인덱싱하면 차원이 낮아져서 리스트가 벗겨지고, 슬라이싱하면 리스트가 유지됨.

    - 반대로 슬라이싱으로 리스트에 추가하면 리스트가 벗겨지고 포함되며, 인덱싱으로 리스트에 추가하면 리스트를 유지하며 추가됨.

 

 

    - 빈 리스트를 범위를 지정하여 저장하면 해당 부분 항목이 삭제됨.

 

    - del 을 사용한 항목 삭제.

 

 5. 리스트의 연산 그리고 항목 수정

  - 리스트에 리스트 합, 리스트를 반복하는 곱 연산이 가능함.

 

    - 항목 변환 수정.

 

    6. 리스트 함수와 메서드

    - len(): 객체의 길이를 반환하는 파이썬 내장 함수 .

 

    - append(): 리스트의 끝에 새로운 요소를 추가할 수 있는 함수.(오직 한개의 요소만 추가 가능)

 

    - extend(): 리스트에 여러 요소를 동시에 추가 할 수 있는 함수.

 

    - pop(): 리스트의 마지막 요소를 삭제하고 삭제된 요소를 반환, temp 변수를 통해 반환된 요소 확인 가능.

 

     - insert(): 리스트의 원하는 인덱스 요소를 한개만 추가 가능.

 

    - index(): 리스트에서 특정 값의 인덱스를 반환.

 

    - reverse(): 리스트의 요소들의 순서를 반대로 변경 시킴.(순서를 변경한뒤 재 저장되는 형태)

 

    - 슬라이싱을 통하여 리스트 순서를 반대로 변경하는 방법.

 

**슬라이싱을 사용하여 리스트의 순서를 뒤집는 방법

슬라이싱(slicing)은 파이썬에서 시퀀스 타입의 객체(예: 리스트, 문자열, 튜플 등)의 일부를 추출하는 방법임.

기본구조 - [start:stop:step]

1.  start: 슬라이스의 시작 인덱스. 이 인덱스의 요소는 슬라이스에 포함됨. start를 생략하면, step이 양수이면 0, step이 음수이면 -1로 간주됨.

2. stop: 슬라이스의 끝 인덱스. 이 인덱스의 요소는 슬라이스에 포함되지 않음. stop을 생략하면, step이 양수이면 시퀀스의 끝, step이 음수이면 시퀀스의 시작으로 간주됨.

3. step: 슬라이스의 스텝으로 증감 값을 나타냄. step을 생략하면 1로 간주.

 

 

    - sort(): 리스트의 요소를 정렬.(기본 오름차순 정렬됨)

 

    - 오름차순으로 정렬 후 리버스를 이용해 내림차순으로 변경 가능.

 

    - 일반적으로 문자열은 아스키코드 순서대로 정렬됨.(영문, 한글)

 

    - sorted(): 리스트에 포함된 함수는 아니고 파이썬 자체에 내장된 내장 함수.(sorted 했을 당시에만 정렬되고 저장은 되지 않음 유지 시킬려면 result로 저장 필요

 

 

    - count(): 리스트에서 특정 요소의 갯수를 반환함.

 

 

 

**리스트 객체의 구성

    ①번: 변수 I이 PyListObject 리스트 객체를 가리킴.

②번: 이 리스트에는 4개의 요소가 들어 있으므로 리스트의 개수를 나타내는  ob_size가 4임.③번: ob_item이 각 리스트의 개별 요소들을 가리키는 '이름 없는 변수 집합'을 가리키고 있음. 이름 없는 변수들 역시 변수 I과 마찬가지로 각각 다른 객체들을 가리키고 있음.④번: allocated는 실제 할당된 메모리 버킷의 개수를 나타냄.리스트에 요소가 추가될 때 마다 메모리 할당을 하게 되면 성능저하가 발생할 수 있으므로 미리 필요한 것 보다 많은 버킷들을 할당해 놓음. 위 이미지에서는 하나만 더 할당 되어 있지만 실제 코드를 보면 리스트의 사이즈에 따라 4 또는 8씩 증가함. 하지만, 상세 구현은 파이썬 버전에 따라 다를 수 있으므로 실제 필요한 버킷의 개수보다 여유롭게 allocated 사이즈를 유지함.⑤번: 리스트에 또 다른 리스트가 포함 될 수 있음. 이렇게 되면 다시 똑같은 메모리 구조가 재귀적으로 생성됨.

 

튜플

여러 가지 데이터 타입의 값을 저장할 수 있는, 변경 불가능(immutable)한 순서가 있는 컬렉션 임.

 

1. 생성

    - 괄호()를 사용하여 생성하고, 항목들은 쉼표 (,)로 구분됨.

    - 요소가 1개일 경우 끝에 컴마를 붙여야 튜플 형태로 저장됨.

    - 리스트 형태도 튜플로 변환 가능.

    - 괄호가 없어도 쉼표(,) 통해 나누면 자동으로 튜플 형태로 저장됨.

 

    - 튜플 안에 튜플 형태 저장 가능.

 

    - 튜플 요소 변경 불가능.

    - 튜플 안에 리스트 안의 요소는 변경 가능.

 

2. 인덱싱

    - 튜플의 각 항목은 위치(인덱스를 가지고 있으며, 인덱스를 사용하여 접근할 수 있음.(인덱스는 0부터 시작)

 

3. 슬라이싱

    - 튜플의 일부분 만을 추출할 수 있음.

4. 연산

    - 튜플 간의 + 연산으로 리스트를 결합할 수 있고, * 연산으로 리스트를 반복할 수 있음.

 

5. 언패킹

    - 튜플의 항목들은 변수들에 할당될 수 있음.(리스트도 가능)

 

6. 멤버십 테스트

    - in 연산자를 사용하여 튜플에 특정 값이 있는지 확인 가능.(리스트도 가능)

7. 튜플의 정렬

    - 튜플은 형태가 변할 수 없는 컬렉션이기 때문에 sort() 메서드가 제공되지 않음.

    - 그래서 파이썬 내장 함수인 sorted()를 사용함.

 

8. 변환

    - 튜플은 리스트로, 리스트는 튜플로 변환 가능함.

 

input함수

    - 사용자(개발자)에게 데이터를 입력받을 수 있는 함수.

    - 데이터는 항상 문자형(str)으로 반환되어 변수에 저장하거나 처리할 수 있음.

 

문제

    - 국어점수, 영어점수, 수학점수를 입력받아 총점, 평균을 구하는 프로그램을 작성해보자.

    - 단, 입력방법은 100/70/85 형태로 입력.

 

 


 

 

 

 
너의 모든 순간
아티스트
성시경
앨범
별에서 온 그대 OST Part.7
발매일
2014.02.12