[타임어택] 220923 #1

2022. 9. 26. 18:46스파르타코딩클럽[AI트랙 3기]/타임어택(쪽지시험 등)

▶a =  전역변수 , b = 지역변수

실행 안됨. 

변수값 미지정. 

▶mutable : list, dict, set

   immutable : int, float, str, tuple

변수를 할당해주고 값을 바꿨을때 결과가 달라짐. 외울필요 없음.

1)numbers에 1부터 10000까지 할당하기

#case 1 : 빈리스트 + for문 돌리기 
numbers = []
for i in (1,10001)
  numbers.append(i)
  
#case 2 : range 쓰기 
numbers = range(1,10001) #> list(range(1,10001)) list로 안감싸면 range 타입임. 

#case 3 : list축약식
numbers = [x for x in range(1,10001)]

2)짝수 번호 뽑아내기 

▶내가 쓴 오답

def get_even_numbers(numbers):
    result = []
    result.append(list(filter(lambda x: x%2 == 0 , numbers)))
    return result

▶정답 코드

#case 1 : list 축약식으로 풀기
def get_even_numbers(numbers):
    result = [x for x in numbers if x%2 == 0]
    return result
    
#case 2 : filter 활용하기
def get_even_numbers(numbers):
    result = list(filter(lmabda x: x%2 ==0,numbers)) #filter를 쓰기전 list로 감싸주기. 필터는 인자를 두개받음(람다, 리스트)
    return result

3)3의 배수이며 15의 배수가 아닌 수*10 some_numbers에 할당

▶내가 쓴 오답

def get_some_numbers(numbers):
    result = []
    result.append(list(filter(lambda x : x%3 == 0 and x%15 != 0, numbers)))
    return result

▶정답 코드

#case 1 : list 축약식으로 풀기
def get_some_numbers(numbers):
    result = [x*10 for x in numbers if x%3 == 0 and x%15 != 0] #x기본적인 list 축약식의 구조는 x for x in numbers. 바꿔주고 싶으면 맨 앞의 x를 바꿔주기.
    return result
    
#case 2 : filter,map 활용하기 / 2단계로 나누기 1)3의배수이자 15의 배수가 아닌 숫자 골라내기 2)결과물에 10곱하기
def get_even_numbers(numbers):
#1단계 : 3의배수이자 15의 배수가 아닌 숫자 골라내기
    result = list(filter(lmabda x: x%3 == 0 and x%15 != 0 ,numbers)) #filter를 쓰기전 list로 감싸주기. 필터는 인자를 두개받음(람다, 리스트)
#2단계 : 결과에 10 곱해주기
	result = list(map(lambda x: x*10, result)) #result 위에 걸러 준것을 그대로 가져오기. map함수도 쓰는 방식 filter와 동일

		return result

▶내가 쓴 오답

def get_filter_user(users):
    retrun users.sort(lambda x:x[5]+x[7]+x[9]x[11])

▶정답 코드

#1 정렬 먼저하기
users.sort(key=lambda x : sum([x["math_score"],x["science_score"],x["english_score"],x["social_score"]])) 
#sort에서 key의 역할은 key를 중심으로 정렬하겠다는 것/lambda로 에는 딕셔너리가 하나씩 담김.
#sum([]) #sum함수는 list의 숫자들을 인자로 받음.
#lambda x는 각 딕셔너리를 뜻함. 
#이렇게하면 점수가 낮은 사람이 위에서 부터 아래로 내려옴. sort의 reverse를 마지막에 해줌. 
#reverse의 기본값은 False인데 이것을 True로 바꿔주면 내림차순으로 바뀜.

users.sort(key=lambda x : sum([x["math_score"],x["science_score"],x["english_score"],x["social_score"]]),reverse=True)

+)sort dict pprint는 기본적으로 key를 기준으로 abc순으로 자동 정렬함. 딕셔너리 정렬하지 않도록 dict=Fasle 써준다.