※ 본 글은 realpython의 정기메일 내용을 편집, 각색 및 내용추가한 것입니다. C나 Java를 먼저 배운 분이라면 시퀀스의 아이템에 인덱스를 아래와 같은 형태로 붙일 것입니다. for i in range(len(my_items)): print(i, my_items[i]) 파이썬에는 이 코드를 간단히 만들어주는 함수가 있습니다. 바로 enumerate()입니다. names = ['Antonio', 'Carlos', 'Jobim'] for index, value in enumerate(names): print(f'{index}: {value}') enumerate()의 기본 기능은 시퀀스의 각 아이템에 인덱스를 부여하는 카운터 변수를 자동생성해주는 것입니다. 위 코드에서는 index가 그 카운터 변..
본 글은 요약본입니다. 전문은 여기를 클릭! NumPy가 리스트보다 빠른 이유는? 1. 원소의 타입 Array의 원소로 정수 하나를 저장하려고 합니다. NumPy array의 경우 정수는 내장 자료형인 int로 저장되지 않습니다. 대신 binary로 변환 후 int32(4 byte)로 캐스팅 되어 저장됩니다. 숫자가 작아서 1 byte만 필요하다면 1 byte로 변환도 할 수 있습니다. 이 경우에는 정수 하나를 저장하는 데에 딱 1 byte만 필요하겠죠. 반면 리스트에 들어가는 정수는 내장 자료형 int 타입으로 저장됩니다. 이 int 타입 하나를 저장하려면 다음 것들이 모두 필요합니다. 1) Size (4 byte) 2) Reference Count (8 byte) 3) Object Type (8 by..
원문: Top 5 Mistakes You Make When Declaring Functions in Python (약간의 의역을 얹었습니다.) 어떤 프로그래밍 프로젝트에서든 함수는 핵심요소입니다. 잘 만들어진 함수는 코드의 가독성을 높이고 유지보수를 쉽게 만듭니다. 반대로 함수를 엉성하게 만들면 가독성이 떨어지고 유지보수 비용이 올라갑니다. 아무리 실력좋은 프로그래머라도 시간이 지나면 자신의 코드를 잊어버리기 마련이므로, 잘 작성된 함수는 프로젝트의 가치를 올려준다고 할 수 있습니다. 물론 파이썬도 예외가 아닙니다. 함수 작성 시 흔히 범하는 실수를 소개하겠습니다. 이 실수들을 이해하고 나면 가독성과 유지보수 면에서 향상된 코드를 짤 수 있을 것입니다. "가독성은 중요하다." - 파이썬 철학 (역자 주:..
※ 본업이 개발은 아니지만 코딩을 좋아하는 연구자의 입장에서 쓴 글임을 먼저 밝혀둡니다. 파이썬을 처음 공부하는 분들(특히 학생)이 정말 자주 하는 질문이 있습니다. "파이썬도 자격증이 있나요? 따두면 도움이 될까요?" "파이썬 잘하면 취업 잘되나요?" "기본서 다 봤어요. 이제 뭐 봐야 되나요?" 조금씩 다른 질문들이고 답변도 조금씩 다릅니다만, 이 질문들을 꿰뚫는 더 중요한 질문이 있습니다. "파이썬 배우면 나중에 뭘 할 수 있나요?" 현직에 계신 분들은 "이걸 배워서 어디다 써먹지?"라는 의문은 보통 갖지 않으실 겁니다. 이미 필요해서 배우고 계실테니까요. 하지만 학생분들은 필요해서 배운다기보다는 누가 시키니까 배우는 경우가 많습니다. 시키는 주체는 학교가 될 수도 있고 사회가 될 수도 있습니다. ..
for문은 보통 다음의 Code 1과 같은 방법으로 많이 사용됩니다. % Code 1 % % For a given vector, generate % a new vector whose element is % 1 when the element of the given % vector at the same position is % greater than 0.5, otherwise 0. % % 벡터 a가 주어졌을 때, a의 각 요소가 % 0.5보다 크면 1, 그렇지 않으면 0인, % a와 크기가 같은 새 벡터를 생성하라. a = rand(1,10); b = zeros(size(a)); for i = 1:length(a) if a(i) > 0.5 b(i) = 1; end end 즉, 벡터 a의 길이만큼 반복문을 수..
Python GUI를 만들 수 있는 framework은 종류가 어마어마하게 많습니다. Cross-platform만 38가지나 있습니다. 물론 그 중에 인기가 많은, 즉 유저가 많은 framework이 있습니다. 하지만 막상 검색을 해보면 추천하는 framework이 각양각색입니다. 직접 써보기 전에는 장단점을 파악하기 어렵고, 그또한 개인차가 있을 수 있겠지요. 그래서 구글검색을 통해 각 framework이 얼마나 추천을 받는지 조사해봤습니다. 결과를 보니 Tkinter와 PyQt가 가장 많이 추천을 받고 있군요. Tkinter는 python에 포함되어 있는 모듈이라는 장점이 있고 (즉, 모듈 추가 설치가 필요하지 않음) 배우기 쉽고, 오래된 만큼 안정적이라고들 얘기합니다. 대신 이쁘지 않다는 게 단점으..
python console에서 import this를 하면 아래와 같이 The Zen of Python을 볼 수 있습니다. Zen은 '철학' 정도로 보면 될 것 같습니다. 번역은 나무위키 것을 가져와 약간 수정했습니다. 아름다운 것이 추한 것보다 낫다. (Beautiful is better than ugly.) 명시적인 것이 암묵적인 것보다 낫다. (Explicit is better than implicit.) 간결한 것이 복잡한 것보다 낫다. (Simple is better than complex.) 복잡한 것이 난해한 것보다 낫다. (Complex is better than complicated.) 수평적인 것이 내포된 것보다 낫다. (Flat is better than nested.) 여유로운(희소..