파이썬 자료형

Variety_·2021년 10월 5일
0

Python

목록 보기
6/12

자료구조

컴퓨터에서의 자료 구조 => 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키는 방법/학문

  • 여러개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라 한다.

자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 셋(Set) 이 있다.

List => sutdents = ['홍길동', '박찬호']

Tuple => jobs =('의사', '속기사')

Dic => scores = {'kor':88, 'eng':91}

Set = > allSales = {100, 150}

리스트(List)

  • 리스트(List) : 배열과 같이 여러 개의 데이터를 나열한 자료구조

  • [] 를 이용해서 선언, 데이터 구분은 ' , ' 를 이용한다.

  • 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.

  • 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.

str = [3.14, '십', 20, 'one']
lists = [1, 2,3, [1, 2, 3]]
  • 인덱스(index) : 아이템에 자동으로 부여되는 번호표, 0부터 시작!
  • 리스트의 길이 : 리스트에 저장된 아이템 개수를 뜻함 len()을 통해 조회가능
  • len()은 리스트의 길이뿐 아니라 문자열의 길이도 조회가능.
  • for문을 이용한 내부 리스트 조회 : for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있따.
studentCnts = [[1,19], [2, 20], [3, 22], [4, 18]]
for classNo, cnt in studentCnts:
    print("{}학급 학생수 : {}".format(classNo, cnt))
output : 1학급 학생수 : 19
         2학급 학생수 : 20
  • enumerate() : 인덱스와 아이템을 한번에 조회하는 함수
sports = ['농구', '수구', '축구', '마라톤', '테니스']
for idx, value in enumerate(sports):
    print('{} : {}.format(idx, value)')
  • enumerate()는 문자열에도 적용할 수 있다
str = 'Hello python'
for idx, value in enumerate(str):
    print('{} : {}.formate(idx, value)')
  • 사용자가 입력한 문자열에서 공백의 개수를 출력
message = input('메시지 입력 : ')
cnt = 0
for idx, value in enumerate(message):
    if value == ' ':
        cnt += 1
print("공백 개수 : {}".formate(cnt))
  • .append(item) : 마지막 인덱스에 아이템을 추가할 수 있다.

  • .insert(index, item) : 특정위치(인덱스)에 아이템을 추가할 수 있다.

  • .pop(index) : 해당 인덱스에 해당하는 아이템을 삭제해주고 반환해줌, 안넣으면 맨끝 삭제

  • .remove(item) : 특정 아이템을 삭제할 수 있다.

    remove는 한 개의 아이템만 삭제 가능하다, 삭제하려는 데이터가 2개 이상이라면 while문을 이용해야한다.

  • .extend() : 리스트에 또 다른 리스트를 연결(확장)이 가능하다. => 기존리스트에서 확장

  • 덧셈연산자를 이용해서 리스트를 연결할 수도 있음. => 새로운 리스트가 생성됨

  • .sort(reverse=option) : 아이템을 정렬할 수 있다. reverse=True 선택시 내림차순 정렬

  • .reverse() : 아이템 순서를 뒤집어 준다.

리스트 슬라이싱

  • List[n​ : m : ​k]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다. (n to m-1, 간격은 k)

  • 음수사용시 뒤에서부터 계산

  • 슬라이싱을 이용해서 아이템을 변경할 수 있다.

students = ['a', 'b', 'c']
students[1:2] = ['p', 'k', 'l']
output : a, p ,k, l, b, c
  • slice()함수를 이용해서 아이템을 슬라이싱할 수 있다.
students[slice(2)]
  • 리스트의 곱셈 연산 : 리스트를 곱셈 연산하면 아이템이 반복된다.

  • index(item,start,end) : item의 인덱스를 찾아줌, 단 여러개가 존재할시 앞에부터 리턴!. start랑 end 지정해주면 그 사이에 ㅣ있는걸 찾아주기도 함.

  • count() : 특정 아이템의 개수를 알아낼 수 있음.

  • del 키워드를 이용하면 특정 아이템을 삭제할 수 있다.

students = ['홍길동', '강호동', '박찬호', '이경규']
del students[1]
del students[1:3]

튜플(Tuple)

  • 튜플(Tuple) : 리스트와 비슷하지만 아이템 변경(수정, 삭제 등) 불가
  • '()'를 이용해 선언하고, 데이터 구분은 ','를 이용한다. 선언 시 괄호 생략이 가능하다.
  • 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
  • 튜플에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.
strs = (3.14, 'ten', 20)
datas = (10, 20, 30, (40, 50, 60))
  • Index : 튜플도 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표가 있다.

아이템의 존재 유/무 판단하기

  • in, not in 키워드를 이용하면 아이템의 존재 유/무를 판단할 수 있다.
  • not in = > 아이템이 존재하지 않으면 True, 있으면 False 반환
studentsTuple = ('홍길동', '박찬호', '박승철', '김지은')
searchName = input('학생이름 입력')
if searchName in studentsTuple:
    print("까궁")
else:
    print("힝")
  • 덧셈연산으로 기존 튜플을 합친 새로운 튜플 연산가능, extend()같은건 적용 할 수 없다.
  • (number, ) 처럼 item하나 넣고 콤마(,)를 해주면 튜플로 선언가능
  • 리스트와 튜플은 자료형 변환이 서로 가능하다.
  • 튜플 정렬 : 튜플은 수정이 불가능하기 때문에 리스트로 변환 후 정렬한 후 다시 튜플로 변환해야함.
  • sorted()함수를 사용하면 튜플도 정렬할 수 있다, 그러나 리스트 자료형을 반환한다.

딕셔너리(Dictionary)

딕셔너리(Dictionary) : 키(key)와 값(value)를 이용해서 자료를 관리한다.

  • '{ }'를 이용해서 선언하고, 'key:value'의 형태로 아이템을 정의한다, key값은 중복되면 안된다.
  • key와 value에는 숫자, 문자(열), 논리형 뿐만 아니라 컨테이너 자료형도 올 수 있다.
  • 단 key에 immutable 값은 올수 있지만 mutable 값은 올 수 없다.
  • 딕셔너리는 key를 이용해 value를 조회한다.
  • get(key)를 이용해서도 value를 조회할 수 있다, get()은 key가 없어도 에러가 발생하지않고 None을 반환한다.
students = {'s1':'홍길동', 's2':'박찬호', 's3':'이용규','s4':'박승철'}

students['s1']
students.get('s6')
output : None
  • 딕셔너리 추가 : [key] = value 형태로 아이템 추가가능, 추가하려는 키가 이미 존재하면 value값이 변경됨
myInfo = {}

myInfo['이름'] = '박경진'
  • keys()와 values() : 전체 키(key)와 값(value)를 조회할 수 있다.

  • items() : key와 value가 튜플형태로 저장하여 반환

  • pop()과 key를 이용한 item 삭제

  • del과 key를 이용한 item 삭제

memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com'}
memInfo.pop('이름')
del memInfo['메일']
  • in, not in : key의 존재 유/무를 판단 한다.
  • len() : 아이템의 개수를 알 수 있다. (key의 개수)
  • .clear() : 모든 아이템을 삭제 한다.

0개의 댓글