파이썬으로 데이터를 다루다 보면 여러 리스트를 하나로 이어 붙이거나, 조건을 만족할 때까지만 순회하거나, 모든 조합을 구해야 하는 상황이 생기곤 하는데요. 그럴 때마다 for 루프와 임시 리스트를 조합해 작성하다 보면 코드가 생각보다 길어집니다. 😅 이럴 때 파이썬 표준 라이브러리의 itertools 모듈이 큰 도움이 됩니다. 이터레이터를 효율적으로 만들고 조합하는 함수를 모아놓은 모듈인데요. 내장 함수인 map()이나 filter()와 마찬가지로 결과를 한꺼번에 메모리에 올리지 않고 필요할 때마다 하나씩 생성하기 때문에 대용량
파이썬에서는 객체가 같은지 확인하기 위해서 is 연산자와 == 연산자, 이렇게 두 개의 연산자를 사용합니다. 이 두 연산자의 차이점을 정확히 이해하지 않고 잘못 쓰시면 큰 낭패를 보실 수 잇는데요. 이번 포스팅에서는 is 연산자와 == 연산자의 차이점에 대해서 알아보도록 하겠습니다. is 연산자 🆚 == 연산자 파이썬에서 is 연산자는 두 개의 객체가 메모리 상에서 같은 위치에 있는지 확인할 때 사용하는 연산자입니다. 예를 들어, 숫자나 문자 간에 is 연산자로 비교해보면 참이 나옵니다. 하지만, 리스트나 사전을 is 연산자로 비
세트(set)는 파이썬에서 고유한 값들의 집합을 다루는 자료구조입니다. 이를 활용하면 데이터 중복을 제거하고 유일한 값들을 효과적으로 관리할 수 있는데요. 이번 포스팅에서는 다양한 예제를 통해서 파이썬의 세트을 어떻게 사용하는지 아주 꼼꼼하고 차근차근 알아보도록 하겠습니다. 세트 자료구조 먼저, 파이썬와 별개로 자료구조로서의 집합이라고도 불리는 세트에 대해서 가볍게 개념 정리를 하고 넘어가면 좋을 것 같습니다. 세트(set)는 한마디로 순서가 없는 중복되지 않은 데이터의 집합인데요. 리스트(list)과 차이점을 이해하는 것이 무엇보
이번 포스팅에서는 파이썬에서 하나라도 참인지 확인할 때 사용하는 any() 내장 함수에 대해서 알아보겠습니다. 반복문으로 하나라도 참인지 확인하기 여러 개의 데이터가 하나라도 어떤 조건을 만족하는지 확인을 해야 할 때 보통 어떻게 접근을 하시나요? 많은 분들이 자연스럽게 반복문을 떠올릴 것 같은데요. 예를 들어, 여러 숫자 중에서 하나라도 양의 짝수인지를 확인하는 함수를 다음과 같이 구현할 수 있을 것입니다. 이 함수에 양의 짝수가 하나라도 들어있는 리스트를 넘겨서 호출하면 True를 반환하겠죠? 반면에 인자로 넘긴 리스트에 양의
파이썬에서 리스트(list)는 사전(dictionary)과 더불어 가장 널리 사용되는 내장 자료형입니다. 이 두 가지 자료형은 파이썬 프로그래밍에서 필수적인 요소로 사용되지 않은 프로그램을 보기 힘들 정도이죠. 이번 포스팅에서는 다양한 예제를 통해서 파이썬에서 리스트를 어떻게 사용하는지 아주 꼼꼼하게 차근차근 알아보도록 하겠습니다. 참고로 사전(dictionary)에 대해서는 별도의 포스팅에서 아주 자세히 다루고 있습니다! 리스트의 특징 리스트(list)는 여러 데이터를 순서있게 담기 위해서 파이썬에서 가장 범용적으로 사용되는 자료
pip(Package Installer for Python)는 파이썬에 기본적으로 내장되어 있는 패키지 매니저입니다. 이 명령줄 도구를 사용하면 Python Package Index에 다른 개발자들이 올려놓은 패키지를 쉽게 다운로드하고 설치할 수 있는데요. 이번 포스팅에서는 pip를 사용하여 패키지를 관리하는 기본적인 방법에 대해서 알아보겠습니다. pip 설치 여부 확인 pip는 파이썬만 설치하면 기본적으로 딸려서 설치가 되는데요. 혹시 모르니 컴퓨터에 먼저 파이썬과 pip의 설치 여부를 확인하고 넘어가주세요. 패키지 설치 pip로
이번 포스팅에서는 ChatGPT API를 활용하여 파이썬으로 GhatGPT와 유사하지만 터미널 상에서 돌아가는 간단한 챗앱을 구현해보겠습니다. OpenAI API 키 설정 OpenAI에서 회원 가입 후에 API 키를 발급받는 방법은 별도 포스팅에서 자세히 다루었으니 참고 바랍니다. 사전 준비로 터미널을 열고 OPENAI_API_KEY라는 환경 변수에 OpenAI에서 발급받은 API 키를 설정해줍니다. 이렇게 API 키를 환경 변수로 저장해놓으면 Python 코드를 실행할 때 os 모듈의 getenv() 함수를 통해 쉽게 환경 변수를
이번 포스팅에서는 파이썬으로 ChatGPT API를 호출하는 방법에 대해서 알아보겠습니다. OpenAI API 키 설정 OpenAI에서 회원 가입 후에 API 키를 발급받는 방법은 별도 포스팅에서 자세히 다루었으니 참고 바랍니다. 사전 준비로 터미널을 열고 OPENAI_API_KEY라는 환경 변수에 OpenAI에서 발급받은 API 키를 설정해줍니다. 이렇게 API 키를 환경 변수로 저장해놓으면 Python 코드를 실행할 때 os 모듈의 getenv() 함수를 통해 쉽게 환경 변수를 읽어올 수 있습니다. Python에서 환경 변수를
이번 포스팅에서는 파이썬에서 연산자를 이용해서 나눗셈을 하는 방법에 대해서 간단히 알아보고, 몫과 나머지를 동시에 구할 때 사용하는 divmod() 내장 함수에 대해서도 알아보겠습니다. 나누기 연산자 파이썬은 특이하게도 2가지 나누기 연산자를 제공하는데요. 첫 번째는 실수 나누기 연산자인 /이고, 두 번째는 정수 나누기 연산자인 //입니다. 이 두 종의 나누기 연산자는 나머지가 없는 경우에는 동일한 값을 반환하는데요. 하지만 엄밀히 얘기하면 이 두 값의 자료형(data type)은 각각 실수와 정수로 차이가 있습니다. 그럼 나눗셈
빠른 선택 알고리즘은 여러 값이 주어졌을 때 k 번째로 작은 값이나 큰 값을 찾을 매우 유용한 검색 알고리즘인데요. 보통 이럴 때 정렬을 생각하지만 빠른 선택 알고리즘을 이용하면 배열을 정렬하지 않고도 빠르게 해당 원소를 찾을 수 있습니다. 알고달레에서 코딩 테스트/인터뷰 준비에 좀 더 특화된 컨텐츠를 만나보세요! 📝 아이디어 일반적으로 빠른 선택 알고리즘을 설명할 때 빠른 정렬 (Quick Sort) 알고리즘이 빠지지 않는데요. 이 두 알고리즘은 공통적으로 피봇(pivot)이라고 하는 임의의 값을 기준으로 배열을 분할하는 로직을
어느 프로그래밍 언어로 코딩을 하든 우리는 수시로 데이터를 정렬해야 되는데요. 이번 포스팅에서는 파이썬에서 데이터를 어떻게 정렬하는지 알아보도록 하겠습니다. sorted() 내장 함수 파이썬에서 정렬을 할 때 가장 부담없이 사용할 수 있는 방법은 내장된 sorted() 함수를 이용하는 것입니다. sorted() 내장 함수는 파이썬에서 순회가 가능한(iterable) 객체를 인자로 받아 데이터를 정렬해줄 수 있습니다. sorted() 내장 함수는 인자로 넘어온 객체의 원래 순서를 건드리지 않고 정렬된 원소들을 새로운 객체에 담아서 반
이번 포스팅에서는 파이썬에서 reversed() 함수를 이용해서 거꾸로 루프를 돌리는 방법에 대해서 알아보려고합니다. 뿐만 아니라 reversed() 함수와 비슷해보이지만 오묘하게 틀린 리스트의 slicing 연산자와 reverse() 함수에 대해서 간단히 살펴보도록 하겠습니다. 거꾸로 루프 돌리기 다음과 같이 5개의 알파멧 문자를 담고 있는 리스트를 어떻게 루프 돌면서 각 문자를 출력할 수 있을까요? 아마도 다음과 같이 간단한 for 문으로 어렵지 않게 각 문자에 순서대로 접근할 수 있을 것입니다. 그럼 역방향으로 각 문자에 접근
다른 프로그래밍 언어를 쓰시다가 파이썬으로 넘어온 분들이 for 루프 때문에 적지 않게 당황하시는 것을 자주 보게 됩니다. 다른 언어에서는 일반적으로 for 루프를 작성할 때 항상 다음 3가지를 명시를 하면서 시작하죠? 인덱스 변수의 초기 값 반복 지속 조건 인덱스 변수 갱신 방법 예를 들어, 자바의 경우 보통 다음과 같은 형태로 for 루프를 돌고요. 자바스크립트에서 for 루프를 돌리는 모습도 크게 다르지는 않습니다. 하지만 파이썬에서는 이러한 전형적인 for 문법을 제공하지 않고, 비교적 다른 언어에서는 나중에 추가된 for-
이번 포스팅에서는 파이썬에서 모든 것이 참인지 확인할 때 사용하는 all() 내장 함수에 대해서 알아보겠습니다. 반복문으로 모두 참인지 확인하기 여러 개의 데이터가 모두 어떤 조건을 만족하는지 확인을 해야 할 때 보통 어떻게 접근을 하시나요? 많은 분들이 자연스럽게 반복문을 떠올릴 것 같은데요. 예를 들어, 여러 숫자가 모두 양의 짝수인지 확인하는 함수를 다음과 같이 구현할 수 있을 것입니다. 이 함수에 양의 짝수로만 이루어진 리스트를 넘겨서 호출하면 True를 반환하겠죠? 반면에 인자로 넘긴 리스트에 음수가 하나라도 있다면 Fal
파이썬에는 global과 nonlocal이라는 아주 많이 쓰이지는 않지만 종종 만나게 되는 재미있는 키워드가 있습니다. 이 두 키워드를 한글로 해석하면 각각 '전역', '비지역'으로 비슷한 의미인 것 같아서 많은 분들이 햇갈려하시는데요. 이번 포스팅에서는 이 두 개의 키워드가 왜 필요하고 어떤 경우에 사용해야되는지에 대해서 알아보도록 하겠습니다. 변수의 범위(scope) global과 nonlocal 키워드에 대해서 이해하려면 먼저 변수의 범위(scope)에 대한 개념을 간단히 짚고 넘어가야할 것 같습니다. 비단 파이썬 뿐만 아니라
아마도 파이썬에서 가장 많이 사용되는 내장 함수는 뭐니 뭐니 해도 print()일 것 같은데요. 특히 아무리 디버거(debugger)가 좋아지더라도 간단한 버그를 찾을 때 print()로 출력해보는 것만큼 빠르고 간단한 방법도 없기 때문일 것입니다. 이렇게 정말 유용하고 많이 사용되는 print() 함수를 어떻게하면 좀 더 잘 활용할 수 있을까요? 기본 출력 제일 먼저 주변에서 print() 함수를 사용하는 가장 흔한 방법을 살펴볼까요? 매일 쓰다보니 당연히 받아드려지는 부분이지만 print() 함수는 문자열을 출력하지만 입력으로
객체 지향 프로그래밍 언어인 파이썬에서 모든 데이터는 결국 객체라고 볼 수 있습니다. 우리가 작성한 클래스의 인스턴스 뿐만 아니라, 심지어 함수, 문자열, 정수, 실수도 결국 타입을 가집니다. 이번 포스팅에서는 파이썬에서 데이터 타입을 확인할 수 있는 몇 가지 방법을 알아보도록 하겠습니다. __class__ 속성 파이썬에서 모든 객체는 __class__라는 특별한 속성을 가지는데요. 여기에는 해당 객체의 데이터 타입이 저장이 되어 있습니다. 예를 들어, 변수 a에 정수 1을 저장하고, a.__class__를 출력해보겠습니다. 정수의
하드웨어와 소프트웨어를 불문하고 Caching(캐싱)은 정말 광범위하게 다양한 형태로 활용되고 있는 성능 최적화 기법입니다. 이번 포스팅에서는 파이썬으로 프로그래밍할 때는 어떻게 캐시를 적용할 수 있는지 알아보도록 하겠습니다. 캐싱이란? 먼저 프로그래밍 입문자 분들을 위해서 캐싱에 대해서 간단히 개념은 짚고 넘어가는 게 좋을 것 같습니다. 일반적으로 캐싱은 접근하는데 시간이 오래 걸리는 데이터를 접근 속도가 빠른 저장소에 사본을 저장해두고 재사용하거나, 실행하는데 오래 걸리는 연산의 결과를 미리 계산해놓고 최초로 필요할 때 한번만
다른 프로그래밍 언어에서 넘어오신 개발자 분들께서 파이썬의 yield 키워드 때문에 당혹스러워하시는 것을 종종 목격하게 되는데요. 이번 포스팅에서는 파이썬에서 제네레이터(generator)를 만드는데 사용되는 yield 키워드에 대해서 예제를 통해서 이해하기 쉽게 설명드리겠습니다. yield 키워드 대부분의 프로그래밍 언어에서 일반적으로 함수는 어떤 결과 값을 return 키워드를 이용해서 반환을 하는데요. 하지만 파이썬에서는 함수가 yield 키워드를 이용해서 다소 다른 방식으로 결과 값을 제공할 수 있습니다. 장황한 설명보다는
파이썬에서 리스트(list)를 콘솔에 출력할 때 보통 print() 함수를 사용하게 되는데요. 예를 들어, 10개의 숫자를 담고 있는 간단한 리스트는 다음과 같이 출력할 수 있습니다. 하지만 리스트가 많은 양의 데이터를 담고 있거나 리스트의 구조가 복잡할 경우에는 이런 식으로 출력하면 상당히 보기가 어려워지죠? 😵💫 예를 들어, 파이썬의 꽃이라고 불리우는 표현식(list comprehension) 문법을 사용해서, 100개의 숫자를 10개씩 이차원 리스트로 만들고 출력해보겠습니다. 이번 포스팅에서는 위와 같이 복잡한 리스트를