ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL. 17 python 과제 (목차확인)
    TIL 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
Designed by Tistory.