• 검색 결과가 없습니다.

▪ list 형 중에서 원소를 변경할 수 없게 만들고 싶다

N/A
N/A
Protected

Academic year: 2022

Share "▪ list 형 중에서 원소를 변경할 수 없게 만들고 싶다"

Copied!
41
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

8장. 효과적인 자료형 ­ tuple형, set형, dictionary형

8.1. tuple형

(2)

▪ (“홍길동”, 25, “율도국”,”왕”), (“이순신”,43,”조선국”,”장군”) 과 같 은 서로 다른 형의 element 를 가지는 자료형을 선언해서 element 를 뽑아내게나 복사하고 싶다

▪ list 형 중에서 원소를 변경할 수 없게 만들고 싶다

2

(3)

tuple의 타입과 선언

8.1. tuple형

▪ 변경 불가능한 선형 자료구조

• 본질적으로 list와 매우 유사한 구조

— element로 구성, 순서(sequence)가 존재

— list와 구분하기 위해 소괄호로 표기함

( ) tuple형의 기호

Variable_name = (element_1, element_2…)

(4)

tuple의 선언 예

4

8.1. tuple형

▪ 동일한 자료형을 원소로 갖는 tuple

• (1,2), (‘one’,’two’,’three’,’four’)

▪ 혼용 자료형을 원소로 갖는 tuple

• (1 , 2 , [1,2],[2,3,4,],(‘W’,’M’))

▪ 빈 tuple

• ( )

▪ 변수로 할당하여 생성

• month = (‘Jan’,Feb’ ... ‘Dec’)

• days = (‘Mon’,’Tue’...’Sun’)

▪ list로부터 tuple 생성가능

(5)

하나의 원소를 갖는 tuple

8.1. tuple형

▪ tuple의 원소는 어떤 타입도 가능하다.

▪ tuple 내부는 “,”로 원소를 구분한다.

• int 타입의 한 원소만 가지고 있는 경우,

– t = (1) 으로 적기 쉬우나 , 이런 경우 t은 정수 1을 할당 받게 되어 tuple 형이 아니다.

– t = (1, )으로 적어야 t이 1이라는 원소 하나를 가진 tuple이 된다.

>>> t = (1)

>>> t 1

>>> t = (1, )

>>> t

(1, )

(6)

tuple의 연산

6

8.1. tuple형

▪ tuple은 slice가 가능하다

▪ tuple은 합병(concatenate)이 가능하다

▪ tuple은 곱(iteration)이 가능하다

>>> t1[1:2]

(2,14)

>>> t2 = (‘love’,)

‘love’

>>> t2[0:]

(‘love’,)

>>> t1 = (‘valentine’, 2, 14, ‘gift’)

>>> t2 = (‘love’, )

>>> t3 = t1 + t2

>>> t3

(‘valentine’, 2, 14, ‘gift’, ‘love’)

>>> print(t2*3)

(‘love’, ‘love’, ‘love’)

>>> print(t1*2)

(‘valentine’, 2, 14, ‘gift’, ‘valentine’, 2, 14, ‘gift’)

(7)

tuple의 연산

8.1. tuple형

▪ list 사용시 활용했던 함수들 tuple에서 사용 가능

▪ len() 함수

▪ min() 함수

▪ max() 함수

[가정]

>>> t1 =(1,2,3,5,7,11)

>>> t2 =(‘love’,’power’,’peace’)

>>> len(t1) 6

>>> len(t2) 3

>>> min(t1) 1

>>> min(t2) love

>>> max(t1) 11

>>> max(t2)

(8)

tuple과 list의 비교

8

8.1. tuple형

(9)

[예제 8-1] tuple형과 list의 비교

8.1. tuple형

(10)

[예제 8-1] tuple형과 list의 비교

10

8.1. tuple형

(11)

[실습 8-1] tuple형과 list의 비교

8.1. tuple형

● 문제 해결 알고리즘

● 테스트

한 중학교에서는 평소 영어, 수학, 과학, 사회 이 4가지 과목을 시험을 본다. 하지만 올해에만 수학시험 을 과제로 대체하기로 하였다. 이때, 수학 과목만 ‘과제’로 대체한 리스트를 출력하는 프로그램을 작성하 라. 단, 원래 과목 목록은 변하지 않는다.

영어, 수학, 과학, 사회의 과목을 tuple로 작성한다.

>>>thisyear_test

['영어', '과제', '수학', '사회']

>>>test

('영어', '수학', '과학', '사회')

(12)

12

(13)

[퀴즈 8-1]

8.1. tuple형

▪ 다음 요구사항에 따라 프로그램을 작성해보자.

I 요구사항 I

아래의 string형과 list형으로부터 tuple을 생성하여라.

str_red = 'Red'

list_color = ['Red', 'Yellow', 'Orange']

(14)

8장. 효과적인 자료형 ­ tuple형, set형, dictionary형

8.2. set형

(15)

set형의 생성

8.2. set형

▪ set은 집합에 관련된 자료 형

▪ 데이터의 중복이 없다

▪ 순서가 없다

{ } set 기호

Variable_name = {element_1, element_2…}

• element에는 string, list, tuple 등이 올 수 있다.

(16)

set의 선언 예

16

8.2. set형

▪ 동일한 자료형을 원소로 갖는 set

• {‘I’,’you’,’she’,’he’}, {[1,2], [3,4] }

▪ 혼용 자료형을 원소로 갖는 set

• {('spring','summer','fall','winter'), 1, 2, 3, 4}

▪ 빈 set

• { }

▪ 변수로 할당하여 생성

• odd_num = {1, 3, 5, 7}

• fruit = {‘apple’, ‘banana’, ‘peach’}

▪ list와 tuple을 기반으로도 생성가능

>>>

set_hello = set(‘hello’)

>>>

set_hello {‘o’,‘h’,‘e’,‘l’}

>>>

set_number = set([1,2,3,4,5])

>>>

set_number

{2,1,3,4,5}

(17)

set형의 특징

8.2. set형

▪ set은 중복을 허용하지 않는다.

▪ set은 순서가 없다

▪ set에서 중요한 것은 어떠한 원소가 존재하는지에 대한 여부

>>> color_list = ['red','blue','red','green','pink','blue','black']

>>> color_list

['red', 'blue', 'red', 'green', 'pink', 'blue', 'black']

>>> color_set = set(color_list)

>>> color_set

{'blue', 'red', 'green', 'pink', 'black'}

>>>

(18)

set형의 함수 사용

18

8.2. set형

▪ list와 tuple에서 사용했던 함수들 사용 가능

▪ len() 함수

▪ min() 함수

▪ max() 함수

>>> len(set_number) 5

>>> len(set_word) 3

[가정]

>>> set_number = {1,2,3,4,5}

>>> set_word = {‘one’, ‘two’, ‘three’}

>>> min(set_number) 1

>>> min(set_word)

‘one’

>>> max(set_number) 5

>>> max(set_word)

‘two’

(19)

set형의 연산자 사용

8.2. set형

▪ 수학에서 사용하는 집합연산 사용가능

▪ 특정원소 포함되어있는지 확인 가능

▪ set의 교집합 연산 : &

▪ set의 합집합 연산 : |

▪ set의 차집합 연산 : -

[가정]

>>> s1 = {0,1,2,3,4}

>>> s2 = {3,4,5,6,7}

>>> s1 & s2 {3,4}

>>> s1 | s2

{0,1,2,3,4,5,6,7}

>>> s1 - s2 {0,1,2}

(20)

set형의 연산자 사용

20

8.2. set형

▪ 특정 원소가 set에 있는지 확인하는 연산 : in

▪ slice 연산은 set에서 사용 불가

• index 구조가 아니기 때문

>>>s1 = set{'red','yellow','green','blue'}

>>> 'red' in s1

>>> True

>>> 'white' in s1

>>> False

(21)

[예제 8-2] set연산

8.2. set형

(22)

[예제 8-2] set연산

22

8.2. set형

(23)

[예제 8-3] set연산

8.2. set형

(24)

[예제 8-3] set연산

24

8.2. set형

(25)

8장. 효과적인 자료형 ­ tuple형, set형, dictionary형

8.3. dictionary형

(26)

dictionary 정의

26

8.3. dictionary형

▪ 사전과 비슷한 형식의 자료형

• 단어를 통해 뜻을 구하는 경우

• 예) 영어 단어를 통해 그에 해당하는 한국어 단어를 구하는 경우 – apple : 사과

{key1:value1,

key2:value2,..} dictionary의 요소는 한 쌍의 key : value로 표현

apple 사과

key value

(27)

value 값이 될 수 있는 자료형

8.3. dictionary형

>>> price = {(‘오뎅‘:’2000원’,'떡볶이‘:’3000원’)

>>> price[‘오뎅‘] = ‘1000원‘

>>> price

{'오뎅’: ‘1000원‘,’떡볶이‘:'3000'}

▪ 모든 자료형이 사용가능

• dictionary 원소의 value값은 할당문에 의해 변경

▪ key값은 중복 되면 안됨

• 하나를 제외한 나머지 key값은 무시

– 어떤 key값이 무시 될지 예측 불가능

(28)

key가 될 수 있는 자료형

28

8.3. dictionary형

▪ 변경 할 수 없는 자료형만 dictionary의 key가 될 수 있음

▪ list를 key 값으로 사용한 경우

▪ tuple을 key값으로 사용한 경우

>>> price = {['떡볶이','김밥']:'3000원',['라면','만두']:'4000원'}

Traceback (most recent call last):

File "<pyshell#8>", line 1, in <module>

price = {['떡볶이','김밥']:'3000원',['라면','만두']:'4000'}

TypeError: unhashable type: 'list'

>>> price = {('떡볶이','김밥'):'3000원',('라면','만두'):'4000원'}

>>> price

{('라면', '만두'): '4000원', ('떡볶이', '김밥'): '3000'}

(29)

list와 tuple 구조와 dictionary 구조의 비교

8.3. dictionary형

▪ list와 tuple의 구조

▪ dictionary구조는 index 값이 아닌 key값으로 value 찾을 수 있음

>>> D = {‘spring’:’봄’, ‘summer’:’여름’, ‘fall’:’가을’, ‘winter’:’겨울’}

summer 여름 spring 봄

key value

winter 겨울

fall 가을

>>> L = [2, 4, 6, 8, 10] #list

>>> T = (2, 4, 6, 8, 10) #tuple

2 4 6 8 10

Index0 Index1 Index2 index3 Index4

L

T 2 4 6 8 10

Index0 Index1 Index2 index3 Index4

(30)

list와 tuple 구조와 dictionary 구조의 비교

30

8.3. dictionary형

▪ dictionary 원소는 순서가 정해져 있지 않음

>>> number = {1:’one’, 2:’two’, 3:’three’, 4:’four’, 5:’five’}

>>> number

{ 2:’two’, 1:’one’,4:’four’, 3:’three’, 5:’five’}

(31)

list와 tuple 구조와 dictionary 구조의 비교

8.3. dictionary형

▪ list, tuple, set과 마찬가지로 함수 활용 가능

▪ dictionary에 새로운 항목을 추가하는 함수

▪ dictionary에 존재하는 원소를 삭제하는 함수

>>>price = { ‘떡볶이’ : ‘삼천원’ }

>>>price

{ ‘떡볶이’ : ‘삼천원’ }

>>>price[‘오뎅’] = ‘이천원’ #추가하기

>>>price

{ ‘떡볶이’ : ‘삼천원’, ‘오뎅’ : ‘이천원’ }

d[key] = value key와 value 쌍 추가

>>>food = { ‘분식’:[‘떡볶이’, ‘호떡’], ‘중식’:[‘짜장면’, ‘탕수육’] }

>>>food

{ '중식': ['짜장면', '탕수육'], '분식': ['떡볶이', '순대'] }

>>>del food[‘중식’] #삭제하기

del d[key] key와 결합된 구성원소 삭제

(32)

▪ key들로 이루어진 list를 리턴하는 메소드

▪ value들로 이루어진 list를 리턴하는 메소드

dictionary의 메소드

32

8.3. dictionary형

>>> information = { ‘name’ : ‘Lee Suji’, ‘height’ : ‘163’, ‘blood type’ : ‘B’ }

>>> information.keys()

dict_keys( [ ‘height’, ‘blood type’, ‘name’ ] )

d.keys() key들로 이루어진 list 리턴

>>> information = { ‘name’ : ‘Lee Suji’, ‘height’ : ‘163’, ‘blood type’ : ‘B’ }

>>> information.values()

dict_values( [ ‘163’, ‘B’, ‘Lee Suji’ ] )

d.values() value들로 이루어진 list 리턴

(33)

▪ key값과 그에 해당하는 value들의 쌍을 tuple로 리턴하는 메소드

▪ value들로 이루어진 list를 return하는 메소드

dictionary의 메소드

8.3. dictionary형

>>> information = { ‘name’ : ‘Lee Suji’, ‘height’ : ‘163’, ‘blood type’ : ‘B’ }

>>> information.items()

dict_keys( [ ( 'height', '163‘ ), ( 'blood type', 'B‘ ), ( 'name', ' Lee Suji‘ ) ] )

d.items() (key,value)로 이루어진 tuple 리턴

>>> information = { ‘name’ : ‘Lee Suji’, ‘height’ : ‘163’, ‘blood type’ : ‘B’ }

>>> information

{ 'height‘ : '163‘ , 'blood type‘ : 'B‘ , 'name‘ : ' Lee Suji‘ }

>>> information.clear()

>>> information { }

d.clear() 모든 요소들을 제거하고 초기화

(34)

[실습 8-2] dictionary 예제

34

8.3. dictionary형

● 문제 해결 알고리즘

● 테스트

● dictionary는 순서가 없으므로, 결과가 다르게 나올 수 있다.

어느 커피숍에는 메뉴가 4가지 있다. Americano, Cafe latte, Green Tea latte, Mocha latte 각 메뉴 의 가격은 2000원, 2500원, 3000원, 3500이다. 이 목록을 dictionary로 작성해보고 Americano와 Vanila latte가 있는지 없는지 확인해보자.

dictionary로 메뉴를 정의한다.

True False

(35)

[퀴즈 8-2]

8.3. dictionary형

▪ 다음 요구사항에 따라 프로그램을 작성해보자.

I 요구사항 I

어느 문구점에서는 여러 문구를 판다. 연필은 200원, 펜은 800원, 지우개는 500원, 자는 300원이다. 이 목록을 dictionary를 이용하여 작성해보고 가격만 list로 출력해보자.

(36)

요약

36

▪ tuple형은 list형의 구조와 사용이 거의 동일하다는 공통점이 있으나, 한 번 생성되면 원소의 변 경이 불가능하다는 차이점이 있다.

▪ set형은 집합과 관련된 자료형이다.

▪ dictionary형은 key와 value가 한 쌍을 이루는 원소로 이루어진 자료형이다.

(37)

[연습문제]

1. 아래의 예시를 보고 list형과 tuple형 중 선택하여 각각 빈칸을 채워보라.

2. list형과 tuple형은 index 구조이기 때문에 ( )과 ( )이 가능하다.

3. 맞으면 O, 틀리면 X를 표시하여라.

홈페이지에서 정보 수정 및 추가를 위해 사용할 수 있는 자료형은 ( )이고, 해킹으로 인한 정보 수정을 막기 위해 사용할 수 있는 자료형은 ( )이다.

[O, X문제]

• >>>tuple = ('Hello', 'My', 'name', 'is', '예슬')

>>>tuple[4] = '지수'

위의 프로그램을 실행했을 경우,

tuple의 원솟값은 ('Hello', 'My', 'name', 'is', '지수')이다. ( )

• tuple에서도 list와 같이 min() 함수, max() 함수를 사용할 수 있다. ( )

• tuple에서는 삽입, 삭제는 불가하나 원소의 순서 교체는 가능하다. ( )

• >>>arr = (35, 45, 2, 10, 11)

>>>arr[3]+arr[1]

위의 프로그램의 결과 값은 (10, 45)이다. ( )

(38)

[연습문제]

38

4. 다음은 주어진 list에서 중복된 원소를 제거하는 프로그램이다. 괄호 안에 들어갈 내용을 채우 시오.

5. dictionary형은 ( )와 ( )가 한 쌍을 이루는 원소로 구성되어있다.

6. arr=(1, 2, 3)이 선언되었다고 할 때, arr[1]과 arr[2]를 바꾼 list인 brr를 생성하기 위한 프로그램 을 작성하라. (단, brr는 직접적인 숫자 입력 방식의 원소 할당불가)

7. 어느 교실 학생들의 수학 점수는 10, 9, 9, 6, 7, 6, 8, 9이다. 이 학생들이 어떤 점수를 받았는지 확인할 수 있는 프로그램을 작성하라.

8. 아래의 색칠한 그림 영역에 해당하는 원소를 추출하는 프로그램을 작성하시오.

animal_list = ['dog', 'pig', 'tiger', 'eagle', 'cat', 'dog', 'pig', 'lion']

animal_set = ( )(animal_list) new_animal_list = list(animal_set)

(39)

[연습문제]

9. 어느 커피숍에는 메뉴가 4가지 있다. Americano, Cafe latte, Green Tea latte, Mocha latte 각 메뉴의 가격은 2,000원, 2,500원, 3,000원, 3,500원이다. 이 목록을 dictionary로 작성해보고 Americano와 Vanila latte가 있는지 없는지 확인해보자.

10. 어느 식당의 메뉴와 가격은 돈가스 5,000원, 생선가스 5,500원, 우동 2,500원, 초밥 세트 9,000원이다. 이 메뉴들을 dictionary를 이용하여 작성해보고 각각의 메뉴와 가격을 순차적으 로 출력하는 프로그램을 작성하여 보자.

11. 집합 A={4,3,2,7,8,10,1,9}와 집합 B={0,1,3,5,6,8,9,10,4}가 있다. 이때, 집합 A가 집합 B의 부분집합인지 확인하고 아닐 경우 이 두 집합의 합집합을 구하는 프로그램을 작성하라.

(40)

[연습문제]

40

13. 영수의 집에 과일이 아래 표와 같이 있을 때, 5개 이하인 과일은 5개가 되도록 사려고 할 때, 사 야 할 과일과 그에 드는 각각의 비용과 총비용을 출력하는 프로그램을 작성하라.

14. 한 판매 회사에서는 판매 실적 점수와 고객 평가 점수를 통해 우수 제품을 선발하고자 한다. 아 래와 같이 결과가 나왔을 때, 판매 실적 점수가 4 이상이고 고객 평가 점수가 4 이상인 제품은 우수 제품이 되고, 두 점수 모두 4 미만인 제품은 판매중지 목록에 들어가게 된다. 이때, 우수 제품을 출력하고 로션이 판매 중지에 해당하는지 판단하는 프로그램을 작성하라.

과일 명 가격 개수

2000 3

사과 1500 5

딸기 1800 2

참외 2300 5

제품 명 판매실적 고객평가

비누 3 2

칫솔 5 4

샴푸 2 1

치약 4 4

로션 5 3

(41)

[연습문제]

15. 어느 문구점에서 판매하는 연필은 200원, 펜은 800원, 지우개는 500원, 자는 300원이다. 이 목록을 dictionary형을 이용하여 작성해보고 가격만 list형으로 출력해보자.

참조

Outline

관련 문서

대표태그 기능을 이용하면, 밴드 내 게시글을 게시판처럼 주제별로 분류해서 확인할 수 있습니다!. ① 밴드설정&gt; 대표 태그

한편,직무만족에 따른 독립변수인 리더십 유형과 종속변수인 이직의도의 신분위 협과의 영향력 검증결과 직무만족을 높게 하는 집단에서는 리더십 유형 중

• 우주를

마인드맵으로 실제적인 논리 프로세스를 경험한 다음 내가 만들고 싶은 인공지능 디자인을 알고리즘과 마인드맵으로 표현할 수 있다.. 웹 사이트를 활용하여 내가

실제 전문가는 새로운 지식을 습득하거나 잘못된 지식을 바로 알게 된다면 언제든 머릿속에서 규칙을 추가하거나 변경할 수 있지만, 저장된

학습 목표 서바이벌리스트의 생존 배낭을 살펴보고 나만의 생존 배낭에 들어갈 물품 목록을 작성할 수 있다.. 그 외에도 음식을 만들고 체온을

LIST OF TABLES... LIST

이 동아리의 남학생 중에서 데스크톱 컴퓨터를 사용하는 학생은  명이고, 여학생 중에서 노트북 컴퓨터를 사용하는