목록전체 글 (146)
개발자 블로그

튜플의 패킹과 언패킹 튜플로 값을 묶는 행위를 가리켜 '튜플 패킹'이라 하고 반대로 튜플로 묶여 있는 값들을 풀어내는 행위를 '튜플 언패킹'이라 한다. 튜플 패킹 하나 이상의 값을 튜플로 묶는 행위 튜플 언패킹 튜플에 묶여 있는 값들을 풀어내는 행위 예를 들어 봐보자! 먼저, 튜플의 패킹은 ()로 값들을 묶는 방법이 있고 그냥 소괄호 없이도 패킹이 가능하다! 반대로 언패킹을 진행할 때는 패킹 된 값의 수와 변수의 수를 갖게하여 할당해주면 된다. 그리고 언패킹 과정에서 *을 사용하여 둘 이상의 값을 리스트로 묶어서 하나의 변수에 저장하는 것도 가능!! 이렇듯, 튜플이 아닌 리스트로 묶인다는 사실을 기억하자. 현재는 맨 끝 값만 *을 사용하여 값을 묶었지만 가운데, 맨 앞 상관없이 묶을 수 있다는 것도 기..
문제 설명 더보기 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예 nmreturn 3 12 [3, 12] 2 5 [1, 10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출력 예 #2 자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다. 나의 풀이 def solution(n, m): answer = [] n_measure =..
QuerySet이란 django에서 QuerySet은 데이터베이스의 객체들의 집합을 의미한다. QuerySet은 기본값으로 objects 라는 이름을 가진 Manager 를 통해 얻을 수 있다. Manager는 django model과 데이터베이스 사이를 오갈 수 있게 해주는 역할이다. categories = Category.objects.all() 위와 같은 코드는 Category 테이블 내 모든 객체를 불러오는 역할을 한다. filter() 를 써서 원하는 정보만을 불러올 수도 있다. books = Book.objects.filter(name__startswith='This') 이 코드로는 ‘This’로 시작하는 책의 데이터들을 불러올 수 있다.
'제너레이터'는 Iterator 객체의 한 종류이다! 따라서 next 함수를 호출하면 값을 하나 씩 얻을 수 있다. 제너레이터 객체를 만들기 위한 두 가지 방법 제너레이터 함수(function) 제너레이터를 만들기 위한 함수 정의 제너레이터 표현식(expression) 제너레이터를 만들기 위한 식 제너레이터 함수 제너레이터 함수를 만들기 위해선 꼭 필요한 녀석이 있다! 바로 yeild라는 것인데, 함수에서 return과 비슷한 역할이라고 생각하면 된다. 우리는 함수 내에 yield가 선언되기만 하면 아 이 함수는 제너레이터 함수구나라고 생각하면 되겠다. >>> def gen_num(): print('first num') yield 1 print('second num') yield 2 >>> gen = g..

map & filter map 함수와 filter 함수를 통해 반환되는 객체는 iterator 객체이자 generator 객체이다. 그리고 함수에 들어가는 2번째 인자는 iterable 객체여야한다. 이 특징이 map과 filter 함수의 장점이자 쓰는 이유가 되겠다. 그리고 두 함수의 차이는 첫번째 인자로 들어가는 함수의 리턴 값에 차이가 있다. filter 함수의 경우 첫번째로 들어가는 함수가 True or False를 반환을 하며 '걸러주는 기능'을 한다고 보면 된다. 두 함수가 iterator 객체이자 generator 객체인 이유는 iterable 객체의 값을 순차적으로 함수와 mapping하여 값을 반환하기 때문! generator객체에 대해서는 다음 시간에 더 자세히 알아보도록하자! *아! ..
문제 설명 더보기 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 조건 n은 길이 10,000이하인 자연수입니다. 입출력 예 nreturn 3 "수박수" 4 "수박수박" 나의 풀이 def solution(n): answer = '' for i in range(1, n+1): if i % 2: answer += '수' else: answer += '박' return answer 개선 풀이 def solution(n): answer = '수박'*n return answer[:n] 두 풀이를 보면 처음 내가 짰던 코드가 얼마나 한심한지 모르겠다. 단순..
문제 설명 더보기 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 nreturn 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다. 나의 풀이 def solution(n): answer = 0 for i in range(1, n): if n % i == 0: answer += i return answer + n 개선 풀이 def solution(n): answer = 0 for i in range(1, int(n/2)+1): if n % i ..

문제 설명 더보기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 입출력 예 nresult 10 4 5 3 입출력 예 설명 입출력 예 #1 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환 입출력 예 #2 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 나의 풀이 def decimal(n): if n == 1: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True def..
iter 함수 하나 이상의 값을 저장하거나 꺼내보는 것은 빈번하고 중요한 일이다. 보편적으로 for문을 사용하여 2개 이상의 값들을 꺼내보는 작업을 했는데, 이러한 작업이 중요하기에 상황에 따라 우리는 유연하게 대처할 필요가 있다. 따라서 이번에 소개할 방법은 원하는 시기에 필요에 따라 값을 꺼낼 수 있는 iterator 객체를 설명하고자 한다. >>> ds = [1,2,3,4] >>> ir = iter(ds) >>> next(ir) 1 >>> next(ir) 2 >>> next(ir) 3 >>> next(ir) 4 >>> next(ir) Traceback (most recent call last): File ~~~~~~ next(ir) StopIteration iter 함수 코드 정리를 하면 이런대 ..
더보기 문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 제한 사항 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. 입출력 예 seoulreturn ["Jane", "Kim"] "김서방은 1에 있다" 나의 풀이 def solution(seoul): answer = '' for idx, val in enumerate(seoul): if val == 'Kim': answer..