[TIL]Python. Tuple,Set

여주링·2020년 11월 24일
0

Python

목록 보기
5/15

Tuples

Tuple란?

Tuple은 list같은 자료구조 중 하나로 list와 비슷하게 요소들을 저장할때 쓰인다
그러나 List는 수정이 가능하지만 tuple은 한번 선언되면 수정이 불가능 하다는 차이점이 있다

my_tuple = (1, 2, 3)

위와 같은 방법으로 선언이 가능하며
Tuple의 요소들을 읽어들이는 방법, slicing은 모두 list와 동일하다

왜 Tuple을 쓸까?
Tuple은 일반적으로 2개에서 5개 사이의 요소들을 저장할때 사용되며, 특정 데이터를 ad hoc(즉석적으로) 하게 표현하고 싶을때 사용된다.
메모리 용량에서도 차이가 나는데 list의 경우 가변요소때문에 용량이 큰 반면, tuple은 list에 비해 용량이 적은 편이다. -> 수정이 불필요하고 간단한 형태의 데이터라면 tuple을 쓰는게 효과적

<Tuple 실전 문제>

Input으로 주어진 list를 3개의 tuples로 구성된 리스트로 변환하여 리턴해주세요.
Input 리스트는 정확히 6개의 요소를 가지고 있습니다.
예를 들어, 다음과 같은 list를 input으로 받았다면:

my_list = [1, 2, 3, 4, 5, 6]

다음과 같이 리턴해야 합니다.

[(1,2), (3, 4), (5,6)]

<문제풀이>
개념을 이해했으나 실전에 약한 1인.. 푸는데 2시간넘게 걸린듯^^
(훨씬 더 깔끔한 풀이가 있을듯...🤔)

1)위의 예를 보면 6개의 요소를 tuple로 두개씩 나눠 가진걸 알수 있다.
그래서 슬라이싱을 통해 일단 세 덩어리로 분류하는 작업을 했다

a = tuple(my_list[0:2])
b = tuple(my_list[2:4])
c = tuple(my_list[4:])

2)이후부터 혼자서 산으로 가기 시작했는데...
(그때는 계속 error가 떴던걸로 기억하는데.. 다시 해보니 잘되네?응?)
첫번째 방법은

list_a = [a,b,c]

이런식으로 나눈 tuple들을 list에 넣어주는것이다.
(이거 분명이 나 할때 안됬는데....🤭)

내가 한 방법은...
첫번째 방법을 아주돌아돌아 가는것으로
빈 리스트를 만들어준뒤 append()로 하나하나 채워주는 방법이다

d = []
d.append(a)
d.append(b)
d.append(c)

그리고 리턴값으로 d를 넣어주면 된다
다시말하지만.. 진짜 첫번째 방법이 에러가 나서.. 두번째로 한거다...

Set

Set란?

Set은 List와 마찬가지로 여러 다양한 타입의 요소들을 저장할 수 있다.

List와 다른점은?

  • List와 다르게 요소들이 순서대로 저장되어 있지 않음(ordering이 없음) 그래서 for 문에서 읽어들일때 요소들이 무작위 순서대로 나옴
  • 순서가 없으므로 indexing도 없다
  • 중복된 값을 저장할 수 없습니다. 만일 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재한다면 새로운 요소가 이 전 요소를 치환(replace)합니다.

Set 생성하는 법
보통 두가지로 중괄호 ({ }) 를 사용하는 방법과 set() 함수를 사용하는 방법 입니다.

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

set2는 list를 set으로 변환하고 싶을때 사용한다

Set 요소 추가,삭제

1.add
List에서는 append,insert 함수를 사용했지만
set에서는 add 라는 함수를 사용해서 새로운 요소를 추가한다

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

2.remove
Set에서 요소를 삭제할때는 remove 함수를 이용한다
(remove함수는 list에서도 이용함)

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

Lookup

Lookup이란 Set에 어떠한 값이 이미 포함되어 있는지를 알아보는 것을 말함
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

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

Set는 교집합과 합집합을 구할때 도 사용될 수 있습니다.
1.교집합
'&'키워드 혹은 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}

2.합집합
'|'키워드 혹은 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}

<Tuple 실전 문제>

왼쪽 상단의 get_unique_numbers_count 함수를 구현해주세요.
get_unique_numbers_count 함수는 numbers 라는 parameter를 받습니다.
numbers는 list 입니다. Numbers의 고유 값들의 수를 리턴해주면 됩니다.
예를 들어, 다음과 같은 input이 들어왔다면:

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

5를 리턴해주면 됩니다.

<문제풀이>

1)해당 함수의 매개변수는 numbers라는 list이다. 이 리스트를 set()함수를 이용해 중복된 숫자를 없앤다

setexample = set(numbers)

2)중복된 숫자가 없으니 이제 갯수가 몇갠지만 확인하면 된다. len()함수를 통해 알아낼수 있으니 len()함수를 사용하자

return len(setexample)

참~쉽죠?(태세전환 빠름)

profile
🌱Backend Developer👩‍💻

0개의 댓글

관련 채용 정보