Tuple은 list같은 자료구조 중 하나로 list와 비슷하게 요소들을 저장할때 쓰인다
그러나 List는 수정이 가능하지만 tuple은 한번 선언되면 수정이 불가능 하다는 차이점이 있다
my_tuple = (1, 2, 3)
위와 같은 방법으로 선언이 가능하며
Tuple의 요소들을 읽어들이는 방법, slicing은 모두 list와 동일하다
왜 Tuple을 쓸까?
Tuple은 일반적으로 2개에서 5개 사이의 요소들을 저장할때 사용되며, 특정 데이터를 ad hoc(즉석적으로) 하게 표현하고 싶을때 사용된다.
메모리 용량에서도 차이가 나는데 list의 경우 가변요소때문에 용량이 큰 반면, tuple은 list에 비해 용량이 적은 편이다. -> 수정이 불필요하고 간단한 형태의 데이터라면 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은 List와 마찬가지로 여러 다양한 타입의 요소들을 저장할 수 있다.
List와 다른점은?
- List와 다르게 요소들이 순서대로 저장되어 있지 않음(ordering이 없음) 그래서 for 문에서 읽어들일때 요소들이 무작위 순서대로 나옴
- 순서가 없으므로 indexing도 없다
- 중복된 값을 저장할 수 없습니다. 만일 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재한다면 새로운 요소가 이 전 요소를 치환(replace)합니다.
Set 생성하는 법
보통 두가지로 중괄호 ({ }) 를 사용하는 방법과 set() 함수를 사용하는 방법 입니다.
set1 = {1, 2, 3}
set2 = set([1, 2, 3])
set2는 list를 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이란 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
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}
왼쪽 상단의 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)
참~쉽죠?(태세전환 빠름)