TIL

TIL. 17 python 과제 (목차확인)

codermun 2020. 10. 25. 19:01
728x90
반응형
  • 파이썬에서 가변객체와 불변객체는 무엇이며, 어떠한 자료형이 있는지 공부한다.
  • BTS혹은 레드벨벳의 멤버정보를 딕셔너리로 구현해주세요.
  • 스트링, 리스트, 딕셔너리를 반복문으로 돌면서 인자를 출력하는 함수를 작성해보세요.
  • for in 반복문을 작성해보고, break, continue의 쓰임새도 알아보세요.
  • if와 else를 이용해 조건문을 작성해보세요
  • list method 중 append, pop, sort 을 활용한 함수를 작성해보세요

# 파이썬은 모든 데이터를 객체로 관리한다. ==> 객체, 클래스, 인스턴스 따로 학습 및 정리하자

# 파이썬은 모든 데이터를 객체로 관리한다.

# 온갖 종류의 데이터, 함수, 모듈, 클래스, 인스턴스 모두가 다 객체이다.



# 가변 객체

# lsit , dictionary,

# 불변 객체

# int, float, bool, tuple, '문자열'

 

## '문자열' 또한 불변 객체로 '문자열' 사이의 어떠한 하나의 값만을 바꾸고자 한다면

바꾸고자 하는 문자열을 새로이 할당하여야 한다.


## dictionary 구성하기

BTS = {'리더' : 'RM', '서브보컬' : '', '리드래퍼' : '슈가', '메인댄서' : '제이홉', '메인댄서' : '지민', '서브보컬' : '', '메인보컬' : '정국'}

 

print(BTS)

print(BTS.values()) # dict 값만 출력

print(BTS.keys()) # dict 키만 출력

print(BTS.items()) # dict 키 + 값 출력 #print와는 다른 결과

 

BTS[3] = 33 # dict 마지막에 3 : 33 값 추가.

:: {'리더' : 'RM', '서브보컬' : '', '리드래퍼' : '슈가', '메인댄서' : '제이홉', '메인댄서' : '지민', '서브보컬' : '', '메인보컬' : '정국', 3 : 33}

 

del BTS['리더'] # dict '리더' 키와 값 삭제

:: {'서브보컬' : '', '리드래퍼' : '슈가', '메인댄서' : '제이홉', '메인댄서' : '지민', '서브보컬' : '', '메인보컬' : '정국', 3 : 33}

 

RV = {'메인보컬' : '웬디', '리더' : '아이린', '메인댄서' : '슬기', '서브보컬' : '조이'}

print(RV)

RV['서브래퍼'] = '예리' # 키 : 값 추가

:: {'메인보컬' : '웬디', '리더' : '아이린', '메인댄서' : '슬기', '서브보컬' : '조이', '서브래퍼' : '예리'}


## 반복문 활용 (들여쓰기 미적용_tistory)

for i in BTS: # 키 값만 출력됨

print(i, end=' ')

:: (['서브보컬', '리드래퍼', '메인댄서, '메인댄서', '서브보컬', '메인보컬'])

for i in BTS.items(): # 키 + 값 출력됨

:: (['서브보컬' : '', '리드래퍼' : '슈가', '메인댄서' : '제이홉', '메인댄서' : '지민', '서브보컬' : '', '메인보컬' : '정국'])

 

BTS_list = ['RM', '', '슈가', '제이홉', '지민', '', '정국']

RV_list = ['웬디', '아이린', '슬기', '조이', '예리']

 

for i in RV_list:

print(i, end=' ')

:: '웬디', '아이린', '슬기', '조이', '예리'



i = 0

while i < 7 :

for j in BTS_list:

i += 1

print(j,i, end=' ')

print() # while 반복문을 이용한 BTS 리스트 출력

:: RM 1 진 2 슈가 3 제이홉 4 지민 5 뷔 6 정국 7

for i,j in RV.items():

if i == '서브보컬':

print(j,'', i, '입니다.') # for 반복문으로 서브보컬 찾기 _1

:: 조이 는 서브보컬 입니다.

 

for i in RV:

if i == '서브보컬':

print(RV[i],'', i, '이다@') # for 반복문으로 서브보컬 찾기 _2

:: :: 조이 는 서브보컬 이다@

## i 라는 변수가 꺼내 사용할 범위 값에 RV(dictionary)가 들어갈 경우 .values, .keys, .items()를 특별히 기입해주지 않는 이상 i 는 dict의 키 값만을 가져온다!!!


## continue, break 활용하기 (들여쓰기 미적용_tistory)

j = 0

# ['RM', '진', '슈가', '제이홉', '지민', '뷔', '정국']

while 1 :

for i in BTS_list:

j += 1

print(i, j)

if i != '':

continue

else:

print(i)

break

break

break # for를 정지시키는 break ,뷔를 찾은 후 종료 시켜주지 않으면 81번 의 print가 되어 정국 7이 출력됨

break # while을 정지시키는 break

# break 를 만나면 반복문이 종료 (if문을 종료하는건 아님)


## list method

# 수정

A = ['웬디', '아이린', '슬기', '조이', '예리']

 

A.append('문타리')

print(A) # 리스트 요소하나 추가 (stack 구조)

:: ['웬디', '아이린', '슬기', '조이', '예리', '문타리']

 

A.extend(['문타리', '타리', ''])

print(A) # 리스트 끝에 다른 리스트를 연결(확장)

:: ['웬디', '아이린', '슬기', '조이', '예리', '문타리', '문타리', '타리', '리']

 

A.pop()

print(A) # 리스트의 맨 마지막 요소 삭제

::  ['웬디', '아이린', '슬기', '조이', '예리', '문타리', '문타리', '타리']

 

A.pop(-3)

print(A) # pop(인덱스번호)로 특정 요소 삭제 가능

::  ['웬디', '아이린', '슬기', '조이', '예리', '문타리', '타리']

 

A.remove('문타리')

print(A) # remove method로 특정 요소 삭제 가능

::  ['웬디', '아이린', '슬기', '조이', '예리', '타리']

## '특정 값' 이 2개 이상일 경우 왼쪽 기준 가장 빠른 인덱스의 '특정 값' 1개 만 삭제


# 정렬

B = sorted(A)

print(B) # ['슬기', '아이린', '예리', '웬디', '조이', '타리']

print(A) # ['웬디', '아이린', '슬기', '조이', '예리', '타리']

 

A.sort()

print(A) # ['슬기', '아이린', '예리', '웬디', '조이', '타리']



# sort로 리스트의 요소를 정렬할수 있다 (디폴트 : 오름차순)

## sort() 또는 sort(reverse=False) // 리스트의 값을 작은 순서대로 정렬(오름차순)

# ex : 달리기, 마라톤 등 시간과 관련된 값을 정렬할때 좋음

# ## sort(reverse=True) // 리스트의 값을 큰 순서대로 정렬(내림차순)

# ex : 시험성적 등 점수(?)와 관련된 값을 정렬할때 좋음

## '문자열' 정렬의 경우 사전상(가나다) 순서대로 정렬됨.

## 또한 , sorted 로 정렬함과 동시에 정렬된 리스트를 반환 시킬 수 있는데

## 그냥 sort로 정렬을 할 경우 이전 정렬되지 않은 리스트가 변경되는 것으로 이전 정렬되지 전의 데이터를 확인할 수 없음!

C = [1, 3, 2, 5, 4, 6, 7, 8, 10, 9]

 

D = sorted(C)

print(D)

::  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(C)

:: [1, 3, 2, 5, 4, 6, 7, 8, 10, 9]

 

E = sorted(C, reverse=True

print(E)

:: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

 

## sorted는 오름차순이 디폴트이다.

## 내림차순을 적용하기 위해선 sort와 비슷하게 sorted(C, reverse=True) reverse=True를 이용하면 된다

 

L = [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 9]

L.reverse()

print(L)

:: [9, 11, 10, 8, 7, 6, 5, 4, 3, 2, 1]

 

## reverse

## 리스트의 자료형 함수로 리스트 요소를 역순으로 정렬

## 다른 변수에 할당이 되지 않음..? (질문)

 

F = reversed(C)

print(F) # <list_reverseiterator object at 0x7fb1ff26a130>

print(list(F))

:: [9, 10, 8, 7, 6, 4, 5, 2, 3, 1]

 

R = (1, 3, 2, 5, 4, 6, 7, 8, 10, 9)

P = reversed(R)

print(tuple(P))

:: (9, 10, 8, 7, 6, 4, 5, 2, 3, 1)

 

## reversed 란

## 정렬에 상관없이 순서를 뒤바꿔주는 역할을하는 함수이다 (메서드 NO)

## reversed 사용시 객체가 'reversed'라는? 객체로 반환되는 것이기에 바로 출력이 되지 않는다

## list -> lsit로 반환 // tuple -> tuple로 반환

 

출처 : dojang.io/

 

코딩 도장

 

dojang.io

 

728x90
반응형