ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코딩도장] day18. 세트 사용하기(2/2) - add(), remove(), discard(), pop(), clear(), copy()
    IT/파이썬 2020. 9. 6. 14:29

    ■ 들어가기

    - 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그


    ▶ Unit26. 세트 사용하기

         - 26.1 세트 만들기

         - 26.2 집합 연산 사용하기

         - 26.3 세트 조작하기

         - 26.4 세트의 할당과 복사

         - 26.5 반복문으로 세트의 요소를 모두 출력하기

         - 26.6 세트 표현식 사용하기


    >> 26.3 세트 조작하기 <<

    1. 세트에 요소를 추가하기

    - 사용법 : add(요소)

    >>> a = {1, 2, 3, 4}
    >>> a.add(5)
    >>> a
    {1, 2, 3, 4, 5}

    2. 세트에서 특정 요소를 삭제하기

    - 사용법 : remove(요소)

    - 특정 요소를 삭제하고 요소가 없으면 에러 발생

    >>> a
    {1, 2, 3, 4, 5}
    >>> a.remove(5)
    >>> a
    {1, 2, 3, 4}
    >>> a.remove(5)
    Traceback (most recent call last):
      File "<pyshell#69>", line 1, in <module>
        a.remove(5)
    KeyError: 5

    - 사용법 : discard(요소)
    - 특정 요소를 삭제하고 요소가 없으면 그냥 넘어감

    >>> a
    {1, 2, 3, 4}
    >>> a.discard(2)
    >>> a
    {1, 3, 4}
    >>> a.discard(2)
    >>> a
    {1, 3, 4}

     

    3. 세트에서 임의의 요소를 삭제하기

    - 사용법 : pop()

    - 임의의 요소를 삭제하고 해당 요소를 반환하며, 요소가 없으면 에러 발생

    >>> a = {1, 2, 3, 4}
    >>> a
    {1, 2, 3, 4}
    >>> a.pop()
    1
    >>> a.pop()
    2
    >>> a.pop()
    3
    >>> a.pop()
    4
    >>> a.pop()
    Traceback (most recent call last):
      File "<pyshell#86>", line 1, in <module>
        a.pop()
    KeyError: 'pop from an empty set'

    - 그런데 pop은 리스트에서 마지막 요소를 삭제하는데 사용되었는데, 예제를 돌려보니 세트에서는 첫 번째 요소를 삭제하는 것 같아보이는데 임의의 요소를 삭제한다니... 뭐가 맞는거지?? 

     

    4. 세트의 모든 요소를 삭제하기

    - 사용법 : clear()

    >>> a = {1, 2, 3, 4}
    >>> a
    {1, 2, 3, 4}
    >>> a.clear()
    >>> a
    set()

     

    5. 세트의 요소 개수 구하기

    - 사용법 : len(세트)

    >>> a = {1, 2, 3, 4}
    >>> a
    {1, 2, 3, 4}
    >>> len(a)
    4

    >> 26.4 세트의 할당과 복사 <<

    - 생성 순서

    1) 세트 생성

    2) 다른 변수에 할당(=) => 변수 이름만 다를 뿐 동일한 세트

    3) 다른 변수에 복사(copy) => 완전히 다른 세트

    >>> a = {1, 2, 3, 4}   # 세트 a 생성
    >>> b = a   # 변수 b에 세트 a 할당
    >>> a is b   # 세트 a와 세트 b는 동일한 객체를 나타냄
    True
    >>> b.add(5)   # 세트 b에 요소 추가
    >>> b
    {1, 2, 3, 4, 5}
    >>> a   # 세트 a와 세트 b는 동일한 객체이므로 b에 추가한 요소가 a에도 존재
    {1, 2, 3, 4, 5}
    >>> c = a.copy()   # 세트 c를 복사로 생성
    >>> c
    {1, 2, 3, 4, 5}
    >>> a
    {1, 2, 3, 4, 5}
    >>> a is c   # 세트 a와 세트 c는 다른 객체를 나타냄
    False
    >>> c.add(6)   # 세트 c에 요소 추가
    >>> c
    {1, 2, 3, 4, 5, 6}
    >>> a   # 세트 a와 세트 c는 다른 객체를 나타내므로 세트 c에 요소 추가해도 세트 a에 영향없음
    {1, 2, 3, 4, 5}

    >> 26.5 반복문으로 세트의 요소를 모두 출력하기 <<

    - for 반복문을 사용하여 세트의 요소 출력

    - 사용법

    for 변수 in 세트 :

        코드

    - 세트의 요소는 순서가 없으므로 출력시마다 순서가 달라짐 (숫자로만 이루어진 세트는 순서대로 출력)

    >>> a = {1, 2, 3, 4}
    >>> for i in a :
    print(i)


    1
    2
    3
    4

    >> 26.6 세트 표현식 사용하기 <<

    - for 반복문과 if 조건문을 사용하여 세트 생성

    - 사용법

    {식 for 변수 in 반복가능한객체}

    set(식 for 변수 in 반복가능한객체}

    └ "반복가능한객체" 에서 유일한 문자만 꺼내서(반복x) 변수에 담아 하나 씩 꺼냄

    >>> a = {i for i in 'apple'}
    >>> a
    {'l', 'p', 'e', 'a'}

     

    1. 세트 표현식에 if 조건문 사용하기

    - 사용법

    {식 for 변수 in 세트 if 조건식}

    set(식 for 변수 in 세트 if 조건식)

    >>> a = {i for i in 'pineapple' if i not in 'apl'}   # 'a', 'p', 'l' 을 제외한 문자로 세트 생성
    >>> a
    {'n', 'e', 'i'}

     

     

    ● 요약

    1. 할당/복사의 방법은 리스트, 딕셔너리와 동일

    2. for 반복문, if 조건문을 사용하여 세트를 생성하는 방법은 리스트, 딕셔너리와 동일

    댓글

Designed by Tistory.