https://realpython.com/python-f-strings/
https://ulismoon.tistory.com/7
https://getkt.com/blog/python-keyword-only-arguments/
Set은 list의 친척입니다.
List와 마찬가지로 여러 다양한 타입의 요소(element)들을 저장할 수 있습니다.
하지만 list와 동일하다면 set가 있을 이유가 없겠죠. List와 다른점은 다음과 같습니다:
List와 다르게 요소들이 순서대로 저장되어 있지 않습니다. 즉 ordering이 없다. 그러므로 for 문에서 읽어들일때 요소들이 순서대로 나오는게 아니라 무작위 순서대로 나옵니다.
순서가 없으므로 indexing도 없습니다. 몇번째 요소를 읽어들이거나 할 수 없습니다.
동일한 값을 가지고 있는 요소가 1개 이상 존재 할 수 없습니다. 즉 중복된 값을 저장할 수 없습니다. 만일 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재한다면 새로운 요소가 이 전 요소를 치환(replace)합니다.
set을 생성하는 법은 일반적으로 2가지가 있습니다. 중괄호 ({ }) 를 사용하는 방법과 set() 함수를 사용하는 방법 입니다.
set1 = {1, 2, 3}
set2 = set([1, 2, 3])
보시다시피 set() 함수를 사용해서 set를 만들기 위해서는 list를 parameter로 전달해야 합니다.
그러므로 일반적으로 set() 함수를 사용해서 set를 만드는 경우는 list를 set로 변환하고 싶을 때 사용합니다.
앞서 말했듯이 set에서는 중복된 값은 저장이 안됩니다. 그러므로 동일한 값이 1이상 있다면 맨 나중에 저장되는 요소만 남아있게 됩니다.
set1 = {1, 2, 3, 1}
print(set1)
{1, 2, 3}
set2 = set([1, 2, 3, 1])
print(set2)
{1, 2, 3}
List에서 새로운 요소를 추가할때는 append 함수를 사용했던거 기억나시죠?
Append 덧붙인다는 뜻을 가지고 있습니다.
List에는 어울리는 단어 입니다. 왜냐하면 list에서는 요소들이 순차적으로 더해지기 때문에 새로운 요소는 list 맨뒤에 덧붙여지기 때문입니다.
그에 비해 set는 요소들이 순차적으로 저장되지 않습니다. 그러므로 append라는 단어는 어울리지 않습니다.
그래서 set에서는 add 라는 함수를 사용해서 새로운 요소를 추가합니다.
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
{1, 2, 3, 4}
Set에서 요소를 삭제할때는 remove 함수를 사용해서 삭제 합니다.
my_set = {1, 2, 3}
my_set.remove(3)
print(my_set)
{1, 2}
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
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 함수를 사용하면 됩니다.
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}
파이썬의 while문은 else 문이 추가 될 수 있습니다.
if 문의 else 문과 유사합니다. If 문의 else 문은 if 문의 조건문이 False이면 실행됩니다.
While문의 else 문도 while의 조건문이 False 이면 실행됩니다.
즉 while문이 종료되면 else 문이 실행된다는 뜻입니다.
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
<수행할 문장N>
else:
<while문이 종료된 후 수행할 문장1>
<while문이 종료된 후 수행할 문장2>
<while문이 종료된 후 수행할 문장3>
...
<while문이 종료된 후 수행할 문장N>
예를 들어, 앞서 본 while 문에 else 문을 추가하여 while 문이 종료되고 난 후의 number 변수의 값을 출력할 수 있습니다.
number = 0
while number <= 10:
print(number)
number += 1
else:
print(f"while 문이 끝나고 난 후 의 number : {number}")
0
1
2
3
4
5
6
7
8
9
10
while 문이 끝나고 난 후 의 number : 11