python의 math에는 trunc가 있습니다. 이 함수는 소수 부분을 날린 결과를 돌려줍니다. 어떤 결과를 출력하는지 간단하게 알아보도록 하겠습니다. 먼저, math.floor(3.4)와 math.trunc(3.4)를 비교해 보겠습니다. 전자는 3.4보다 작거나 같은 수 중 제일 큰 수인 3을 리턴합니다. 다음에, trunc입니다. .4 부분을 날린 결과는 3이므로, 3을 돌려주겠군요. 결과를 보니까 3, 3으로 같음을 확인할 수 있습니다. n.x에서 소수 부분을 떼어내면 n이 됩니다. 이는 n.x를 넘지 않는 가장 큰 수와 동일합니다. 그러니, 양수일 때에는 floor와 trunc가 같은 결과를 냅니다. 그러면 모든 실수에 대해서 floor와 trunc는 같은 결과가 나올까요? 0보다 작은 실수를 ..
레퍼런스 검색 결과
최근의 python은 dictionary가 순서가 보장됩니다. 넣은 순서가 유지되는 특성이 있습니다. 여기서 궁금한 점. 그러면 어떻게 가장 먼저 넣은 키와 나중에 넣은 키를 알 수 있을까요? 파이썬의 dictionary와 orderedDict는 popitem 함수가 있습니다. 이 함수는 기본적으로 가장 마지막에 추가한 원소를 제거하면서 가져오는 역할을 합니다. 한 번 사용해 보겠습니다. 먼저, 1부터 4까지 순서대로 OrderedDict에 추가합니다. 다음에, 7번째 줄에 루프를 돌면서, popitem으로 가장 마지막에 추가된 원소를 빼오게 됩니다. 1부터 4까지 있었을 때에는 가장 마지막에 있었던 것이 4입니다. 따라서, 4가 빠질 겁니다. 다음에 1부터 3까지 있을 때에는 가장 마지막에 있던 것이 ..
안녕하세요. 장고에서 bulk create 함수를 쓰다가 알게된 itertools의 islice 함수에 대해 간단하게 소개해 보겠습니다. 먼저, islice는 iterator를 리턴합니다. 이 iterator의 next() 메소드가 iterable로부터 선택된 값들을 리턴합니다. 이게 무슨 이야기인지 밑에서 후술하도록 하겠습니다. iterable, start, stop, step 요래 받으면, start로부터 step만큼 증가하는 iterator를 리턴하게 됩니다. step이 0보다 큰 정수라면 어디까지 증가할까요? stop 미만까지 증가합니다. 예제를 몇 개 보면서 이해해 보겠습니다. gen에는 [3, 5, 7, ... , 23]이 저장되어 있습니다. islice의 iterable한 것은 list인 g..
안녕하세요. 이번 시간에는 python의 setattr에 대해 간단하게 알아보겠습니다. 먼저 A 클래스는, __init__ 함수가 호출되면, a, b, c에 각각 0을 넣습니다. 다음에, 객체를 표현하는 __repr__은 a=a의 값, b=b의 값, c=c의 값 형태로 출력해 줍니다. 객체 a를 생성하고, a와 b와 c에 각각 1을 넣어보겠습니다. 그 다음에 a를 출력해 보겠습니다. 그러면 a=1, b=1, c=1이 나옵니다. 그런데, 속성 값이 100개쯤 있고, 딕셔너리에도 속성 값이 100개쯤 있는데 일일히 a.a = 1, a.b = 1 이런 식으로 넣기는 코드가 너무 길어질 겁니다. setattr 함수를 알아보겠습니다. setattr(x, 'y', v)는 x.y = v와 같다고 되어 있습니다. 즉,..
모듈의 실행 시간을 측정할 때 간단하게 쓸 수 있는 timeit에 대해 알아봅시다. 사실 2년 전에 쓰려고 했지만, 이제 와서 쓰게 되네요. 먼저 timeit은 문서에서의 소개를 보면, python code의 실행 시간을 측정하는 방법을 제공합니다. 함수 형태로 제공하는 것과 커멘드 라인으로 제공되는 형태가 있습니다. 함수 형태로 제공되는 것 먼저 보겠습니다. stmt는 실행될 문장을 의미합니다. number는 몇 번이나 실행될 것인지를 나타냅니다. 저는, 보통 측정해야 할 부분이 있을 때에는 함수로 빼서 많이 하는 편인데요. 한 번 간단하게 작성해 보도록 하겠습니다. 문서에 따르면, 8 ~ 11번째 줄의 의미는 test()를 50만번 실행할 때 걸리는 시간을 측정하는 것입니다. 문제는, test가 정의..
최근댓글