Python 자료구조 2

조천룡·2023년 5월 18일

python

목록 보기
7/13
post-thumbnail

튜플

튜플(Tuple) 이란?

  • 리스트와 비슷하지만 아이템 변경이 불가하다.

튜플 선언

  • ‘ () ’를 이용해서 선언하고, 데이터 구분은 ‘ , ’를 이용한다
  • 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
  • 튜플에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.

인덱스

  • 튜플도 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표가 있다.

아이템 조회

  • 튜플 아이템은 인덱스를 이용해서 조회 가능하다.

in, not in 키워드

  • in, not in 키워드를 이용하면 아이템의 존재 유/무를 알 수 있다.

코드

students = ('홍길동', '박찬호', '이용규', '박승청', '김지은')

searchName = input('학생 이름 입력: ')
if searchName in studentsTuple:
	print('{} 학생은 우리반 학생입니다.'.format(searchName)
else:
	print('{} 학생은 우리반 학생이 아닙니다.'.format(searchName)
  • in, not in 키워드는 문자열에서도 사용 가능하다.
wrongWrod = ('쩔었다', '짭새', '꼽사리', '먹튀', '지린', '쪼개다', '뒷담 까다')
sentence = '짭개 등장에 강도들은 모두 쩔었다. 그리고 강도 들은 지린 듯 도망갔다.'

for word in wrongWord:
	if word in sentence:
    	print('비속어: {}'.format(word)

아이템 개수

  • 리스트와 마찬가지로, 튜플에 저장된 아이템 개수를 튜플 길이라고 한다.

len()

  • len()과 반복문을 이용하면 튜플의 아이템 조회가 가능하다.

코드

for i in range(len(students)):
	print('i:{}'.format(i)
    print('students[{}] : {}.format(i, students[i]))
n = 0
slength = len(students)
while n < slength:
	print('n: {}'.format(n))
    print('students[{}]:{}'.format(n, students[n]))

튜플 결합

  • 두 개의 튜플을 결합할 수 있다.

튜플 슬라이싱

  • 리스트와 마찬가지로 [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.
  • 슬라이싱할 때 단계를 설정할 수 있다.
  • 튜플은 슬라이싱을 이용해서 아이템을 변경할 수 없다.
  • 리스트에 튜플 아이템으로 변경 가능하다.

slice()

  • slice()함수를 이용해서 아이템을 슬라이싱할 수 있다.

튜플 정렬

  • 튜플은 수정이 불가하기 때문에 리스트로 변환 후 정렬하자. list() ➔ sort() ➔ tuple()

sorted()

  • sorted() 함수를 이용하면 튜플도 정렬할 수 있다.
  • sorted()는 리스트 자료형을 반환한다.

for문을 이용한 조회

  • for문을 이용하면 튜플의 아이템을 자동으로 참조할 수 있다.
  • for문을 이용하면 튜플 내부에 또 다른 튜플의 아이템을 조회할 수도 있다.
  • for문과 if문을 같이 사용.

코드

studentsCnts = (1,18), (2,19), (3,23), (4,21), (5,20), (6,22), (7,17)
sum = 0
avg = 0
for classNo, cnt in students:
	print('{}학급 학생수: {}명'.format(classNo, cnt)
    sum += cnt
print('전체 학생 수: {}명'.format(sum))
print('평균 학생 수: {}명'.format(sum / len(studentsCnt)))

while문을 이용한 조회

  • while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.
  • while문과 if문을 같이 이용.

리스트 vs 튜플

  • 리스트에서 사용할 수 있는 extend()함수를 튜플에서는 사용할 수 없다.
  • 튜플은 리스트와 달리 아이템 추가, 변경, 삭제가 불가하다.
  • 튜플은 선언시 괄호 생략이 가능하다.
  • 리스트와 튜플은 자료형 변환이 가능하다.
students = tuple(students) / list(students)

딕셔너리

딕셔너리 (Dictionary)란?

  • 키(key)와 값(value)를 이용해서 자료를 관리한다.

딕셔너리 선언

  • ‘{ }’를 이용해서 선언하고, ’키:값’의 형태로 아이템을 정의한다.

딕셔너리 조회

  • 딕셔너리는 키(key)를 이용해서 값(value)을 조회한다.
  • 존재하지 않는 키를 이용한 조회 시 에러(error) 발생한다.
  • get(key)를 이용해서 값(value)을 조회 할 수 있다. get()은 key가 없어도 에러가 발생하지 않는다. (None)

딕셔너리 추가

  • ‘딕셔너리이름[키(key)] = 값(value)’ 형태로 아이템을 추가한다.
  • 추가 하려는 키가 이미 있다면 기존 값이 변경된다.

딕셔너리 수정

  • ‘딕셔너리이름[키(key)] = 값(value)’ 형태로 아이템을 수정한다.

keys()와 values()

  • 전체 키(key)와 값(value)를 조회할 수 있다.

  • 리스트로 변환하기

  • for문을 이용한 조회
for key in memInfo.keys():
	print(f'{key}: {memInfo[key]}')

딕셔너리 삭제

  • del과 key를 이용한 item 삭제

코드

myInfo = {
    '이름' : 'hong gildong',
    '나이' : '30',
    '연락처' : '010-1234-5678',
    '주민등록번호' : '840202-1234567',
    '주소' : '대한민국 서울',
}

deleteItems = ['연락처', '주민등록번호']

for item in deleteItems:
    if item in myInfo:
        del myInfo[item]

print(myInfo)
  • pop()와 key를 이용한 item 삭제

코드

memInfo = {
    '이름' : '홍길동',
    '메일' : 'gildong@gmail.com',
    '학년' : 3,
    '취미' : ['농구','게임']
}

returnValue = memInfo.pop('취미')
print(f'returnValue: {returnValue})

in, not in

  • 키(key) 존재 유/무 판단 한다.

len()

  • 딕셔너리 길이(아이템 개수) 를 알 수 있다.

clear()

  • 모든 아이템을 삭제 한다.
profile
10√2 Data

0개의 댓글