유용한 파이썬

김병욱·2020년 4월 21일
0

Python

목록 보기
11/14

오늘 repl.it 중에 유용한 것들

파이썬의 포맷

https://realpython.com/python-f-strings/

함수의 우선순위

https://ulismoon.tistory.com/7
https://getkt.com/blog/python-keyword-only-arguments/

Set 자료형

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

하지만 list와 동일하다면 set가 있을 이유가 없겠죠. List와 다른점은 다음과 같습니다:

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

Set 생성하는 법

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}

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

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에서 요소 삭제하기

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

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

{1, 2}

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

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 함수를 사용하면 됩니다.

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}

List 자료형 for문에서 remove 문제 해결

  • list를 for문으로 반복하여 remove함수로 반복되는 인덱스 제거할때 해당 인덱스가 삭제되며 그다음인덱스가 제일처음 인덱스로 땡겨지고 반복되는 루프는 해당인덱스를 제거했으니 그다음인덱스 삭제를 안하는 경우가 있다 . 이럴땐 간단히 for문 정의시에 reversed()함수로 뒤에서부터 반복하면 된다

While Else

파이썬의 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

profile
개발스터디

0개의 댓글