내배캠/TIL

TIL/10/20230324

woongpang 2023. 3. 24. 20:58
728x90

튜플과 집합

 

튜플
튜플은 리스트와 비슷하지만 불변인 자료형이다. 
리스트와 다르게 순서를 바꾸거나 추가할 수 없다.

 

집합

집합은 리스트를 집합에 넣으면 집합이 만들어진다.
집합의 특징은 중복을 제거해 준다.
집합은 교집합/합집합/차집합도 구할 수 있다.

 

차집합
리스트 안에 중복되는 값이 있을 수 있은데 사전에 집합화 시켜서 중복되는건 빼고 다른것과 차집합 하는 거 같음

일단을 집합화를 하고 차집합을 해라.

차집합을 하기 위해 리스트가 아닌 집합화로 만든다.

student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']

student_b = ['물리1','수학1','미술','화학2','체육']

a_set = set(student_a)

b_set = set(student_b)

print(a_set - b_set)

student_a 와 student_b 라는 리스트를 a_set과 b_set 으로 집합을 시켜준 뒤
print에서 a_set - b_set로 중복된걸 없애준다.

f-string

scores = [

    {'name':'영수','score':70},

    {'name':'영희','score':65},

    {'name':'기찬','score':75},

    {'name':'희수','score':23},

    {'name':'서경','score':99},

    {'name':'미주','score':100},

    {'name':'병태','score':32}

]

for i in scores:

    name = i['name']

    score = i['score']

    print(name+'의 점수는 '+str(score)+'점입니다.')
    
    # 스코어는 정수이므로 str을 붙여서 문자열로 변경

 

 

위에보다 더 간단하게 쓰는 방법

for i in scores:

    name = i['name']

    score = str(i['score'])

    print(f'{name}의 점수는 {score}점입니다')
    
f-string을 이용하면 간단하게 가능하다.
지금은 변수가 2개라서 별차이가 없어보이지만 추후에는 변수가 무한이 많아질수있으므로
f-string과 친해지면 좋다!

예외처리

에러가 있어도 멈추지않고 다음 코드를 실행하게 하는 방법

for person in people:

    try:

         if person['age'] > 20:

             print(person['name'])

    except:

        print('에러입니다')



트라이 안에 있는 문장을 실행시키던 중 에러가 있는 경우 멈추지 말고 ‘에러입니다’ 메세지 나오게 하기

except:

    print(person['name'],'에러입니다')


에러 메세지 앞에 사람 이름도 나오게 할 수 있다.

서버한테 콜을 한다거나 내잘못이 아니고 서버쪽에 문제가 있을 가능성도 
있을 때 이렇게 트라이 익셉트로 잡아주면 큰 무리 없이 돌아갈수 있다.

그러나 남용하게 되면, 무슨 에러가 나는지 모르기에 왠만해선 안쓰는게 좋다
그러나 남용하는 경우 돌아는 가는데 뭔가 이상해지고, 무슨 에러가 나는지 모르기에 왠만해선 안쓰는게 좋다.

한줄의 마법

num = 3

if num % 2 == 0 :

    result = '짝수'

else:

    result = '홀수'

print(f'{num}은 {result}입니다.')

 

간단하게 만들기

result = ('짝수' if num %2 == 0 else '홀수')

print(f'{num}은 {result}입니다.')

for문

a_list = [1,3,2,5,1,2]

b_list = []


for a in a_list:

    b_list.append(a*2)


print(b_list)

간단하게 만들기

a_list = [1,3,2,5,1,2]

b_list = [a*2 for a in a_list]

print(b_list)

리스트의 원소를 조작할 수 있는 map, filter, lambda

 

map

def check_aduplt(person):

    if person['age'] > 20:

        return '성인'

    else:

        return '청소년'


result = map(check_aduplt, people)

print(list(result))

피플을 하나하나 돌면서 check_aduplt에 넣어라.
그리고 그 결과값을 다시 리스트로 묶었다.

 

필터
map하고 매우 유사하며 진실인것들만 뽑혀 나온다.
필터는 조금 더 직관적이고 유용하다.

 


 

클래스

물체에다가 물체에 관련된 속성들을 넣어두고 컨트롤할 수 있는 함수들을 만들어 붙여주고, 중앙에서는
그 함수만 불러다가 해당 물체를 제어하는 것들을 말한다.

728x90