TIL[42]. Python_ Set

jake.log·2020년 8월 23일
0

Python

목록 보기
24/39

24.Set

1.Set

Set은 list의 친척이다.
List와 마찬가지로 여러 다양한 타입의 요소(element)들을 저장할 수 있다.

List와 다른점은 다음과 같다.

  • List와 다르게 요소들이 순서대로 저장되어 있지 않다. 즉 ordering이 없다.
  • 그러므로 for 문에서 읽어들일때 요소들이 순서대로 나오는게 아니라 무작위 순서대로 나온다.
  • 순서가 없으므로 indexing도 없다. 몇번째 요소를 읽어들이거나 할 수 없다.
  • 동일한 값을 가지고 있는 요소가 1개 이상 존재 할 수 없다. 즉 중복된 값을 저장할 수 없다. - 만일 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재한다면 새로운 요소가 이 전 요소를 치환(replace)한다.

2.Set 생성하는 법

set을 생성하는 법은 일반적으로 2가지가 있다.

  1. 중괄호 ({ }) 를 사용하는 방법
  2. set() 함수를 사용하는 방법
    set1 = {1, 2, 3}
    set2 = set([1, 2, 3])

set() 함수를 사용해서 set를 만들기 위해서는 list를 parameter로 전달해야 한다.
그러므로 일반적으로 set() 함수를 사용해서 set를 만드는 경우는 list를 set로 변환하고 싶을 때 사용한다.

중복된 값은 저장이 안된다.

set1 = {1, 2, 3, 1}
print(set1)
{1, 2, 3}
set2  = set([1, 2, 3, 1])
print(set2)
{1, 2, 3}

3.Set에서 새로운 요소 추가하기

list는 append()로 새로운 요소를 추가했다.

그에 비해 set는 요소들이 순차적으로 저장되지 않는다.
그러므로 append라는 단어는 어울리지 않는다.
그래서 set에서는 add 라는 함수를 사용해서 새로운 요소를 추가합니다.

my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
{1, 2, 3, 4}

4.Set에서 요소 삭제하기

Set에서 요소를 삭제할때는 remove 함수를 사용해서 삭제 합니다.

my_set = {1, 2, 3}
my_set.remove(3)
print(my_set)
{1, 2}

5.Look Up

Set에 어떠한 값이 이미 포함되어 있는지를 알아보는 것을 look up 이라고 한다.
Set에서 look up을 하기 위해서는 in 키워드를 사용해야 한다.

my_set = {1, 2, 3}

if 1 in my_set:
    print("1 is in the set")
1 is in the set

if 4 not in my_set:
    print("4 is not in the set")
4 is not in the set

6.Intersection (교집합) & Union (합집합)

Set는 교집합과 합집합을 구할때 도 사용될 수 있다.
교집합은 & 키워드 혹은 intersection 함수를 사용하면 된다.

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}

print(set1 & set2)
{4, 5, 6}
print(set1.intersection(set2))
{4, 5, 6}

합집합은 | 키워드 혹은 union 함수를 사용하면 됩니다.

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}

print(set1 | set2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1.union(set2))
{1, 2, 3, 4, 5, 6, 7, 8, 9}

Assignment

왼쪽 상단의 get_unique_numbers_count 함수를 구현해주세요.
get_unique_numbers_count 함수는 numbers 라는 parameter를 받습니다.
numbers는 list 입니다. Numbers의 고유 값들의 수를 리턴해주면 됩니다.

예를 들어, 다음과 같은 input이 들어왔다면:

[1, 2, 1, 1, 3, 4, 5]

5를 리턴해주면 됩니다.

My solution

def get_unique_numbers_count(numbers):
  new_set = set(numbers)
  return len(new_set)

Model soution

def get_unique_numbers_count(numbers):
  return len(set(numbers))
profile
꾸준히!

0개의 댓글