본문 바로가기

Python58

[Python] 집합(Set)의 discard()와 remove() 차이점 파이썬에서 사용할 수 있는 자료구조 중에 집합(set) 타입이 있다. 집합 타입에서 특정 엘리먼트를 제거하는 메소드가 두 개 있다. 'discard()' 메소드와 'remove()' 메소드는 모두 집합에서 엘리먼트를 삭제하는 동작이다. 이 두 메소드의 동작 차이점을 이해하고 사용해야 예기치않은 버그를 피할 수 있다. 집합 remove() 집합에서 remove() 메소드를 이용해서 엘리먼트를 제거하는 소스코드를 작성해보자. 예를들어, s = set() s.add(10) s.remove(10) s.remove(10) 10이라는 숫자를 집합에 추가했다가 remove() 메소드를 이용해서 두 번 제거했다. 이 코드를 실행해보면, Traceback (most recent call last): File "test... 2021. 5. 10.
[Python] 파이썬 PIP란 무엇인가? 프로그래밍을 할 때, 외부 라이브러리 혹은 패키지를 잘 불러와서 사용하는 것이 중요하다. 파이썬의 장점 중 하나는 다양한 기능들을 지원하는 패키지들이 많다는 것이다. numpy, beautifulsoup 같은 다양한 라이브러리 패키지들이 이미 만들어져 제공되기 때문에 파이썬 프로그래머는 불필요한 동작들을 개발하지 않고, 라이브러리, 패키지를 이용해서 자신들의 비즈니스 로직에 집중할 수 있게 된다. 자바의 경우에는 메이븐(Maven)을 통해 이런 라이브러리를 쉽게 다운로드하고 프로젝트에 포함시킬 수 있다. 파이썬의 경우에는 PIP를 통해 이미 만들어져 있는 패키지들을 다운로드하고 로컬에 설치해서 쓸 수 있다. 파이썬 PIP란 무엇인가? 파이썬의 개발 환경에 패키지 라이브러리를 설치하기 위해서 pip 명령을.. 2021. 5. 10.
[Python] 정수형(Integer)과 오버 플로우 자바 혹은 C언어 같은 프로그래밍 언어를 배우다보면 정수형(int) 변수의 오버플로우에 대해서 배우게 된다. 자바와 C언어의 int 변수에 저장할 수 있는 숫자는 상한 값이 있다. 이 상한 값을 넘어버리면 갑자기 숫자가 마이너스 값으로 표기되는 문제가 발생한다. 따라서 큰 값의 정수형 데이터를 다룰 때에는 long 타입을 사용해야한다. 그것보다 더 큰 천문학적인 숫자를 정확하게 다루려면 별도의 알고리즘을 구현해서 사용해야한다. 파이썬에서는 약간 다르다. 파이썬에서는 버전별로 오버플로우 관련 내용이 다르다. 정수형 데이터의 한계값과 타입을 검사해볼 수 있는 코드를 생각해보자. import sys print sys.maxint type(sys.maxint) type(sys.maxint + 1) 이 코드를 파.. 2021. 5. 9.
[Python] 리스트(배열) 문자열로 변환하기 (Python list to string) 문자열 데이터를 다루는 알고리즘을 파이썬으로 작성할 때, 문자열을 이루고 있는 문자들을 배열로 만들어 처리한 다음 다시 문자열로 만드는 동작을 자주사용하게 된다. 일반적으로 문자열의 문자들을 스택이나 큐 등의 자료구조에 넣었다가 빼는 동작을 하고 다시 문자열로 합치는 동작이다. 파이썬에서 리스트에 있는 모든 요소들을 하나의 문자열로 변환하는 방법을 정리해보겠다. 반복문 가장 간단한 방법은 리스트에 포함되어 있는 엘리먼트들을 순회하면서 결과 문자열에 붙여나가는 것이다. str_list = ['Convert', 'list', 'into', 'string'] result = "" for word in str_list: result += word + " " print(result) # Convert list i.. 2021. 5. 9.
[Python] 파이참(PyCharm) 프로젝트 깃허브(Github)에 연동하기 이전 포스트에서 파이썬3와 파이참을 설치해서 파이썬 개발환경을 구축해봤다. (관련자료 : [Python] macOS에 파이썬 개발환경 설치 - 파이썬 설치 및 파이참(PyCharm) 설치) 파이참으로 작성한 소스코드를 깃허브(Github)에 푸쉬해서 저장한다면 좀 더 편하고 안전하게 작성한 코드를 보관할 수 있다. 파이참은 프로젝트 파일을 커밋하고 깃허브 저장소에 푸쉬할 수 있는 기능을 제공한다. 깃허브 계정 및 저장소 생성 우선 파이참 프로젝트를 저장할 깃허브 저장소를 생성해야한다. 깃허브 계정이 없다면 계정생성부터해야한다. GitHub - 세계가 소프트웨어를 빌드하는 곳 GitHub is where over 65 million developers shape the future of software, .. 2021. 5. 9.
[Python] macOS에 파이썬 개발환경 설치 - 파이썬 설치 및 파이참(PyCharm) 설치 맥북이나 아이맥 등 macOS 운영체제에 파이썬 개발환경을 설치해보자. macOS에는 파이썬 2.x 버전이 기본적으로 설치되어 있다. 맥에 설치되어 있는 파이썬 버전을 확인하려면 터미널을 열고 다음 명령을 실행해보면 된다. python -v 확인해보니 현재 맥북에는 2.7.16 버전이 설치되어 있다. 만약 파이썬 2.x 버전을 사용하고자한다면 그대로 쓰면된다. 하지만 파이썬 3를 사용하려면 별도로 파이썬 3.x 버전을 설치해야한다. 참고로 파이썬 2.7 버전의 사용은 피하는 것을 권장하고 있다. macOS에서 파이썬 2.7 버전을 사용하면 다음 경고 메시지를 볼 수 있다. WARNING: Python 2.7 is not recommended. This version is included in macOS .. 2021. 5. 8.
[Python] TypeError: 'NoneType' object is not iterable 오류 원인과 해결 방법 파이썬 프로그래밍을 하다보면 겪는 어려움 중에 타입(Type)과 관련된 에러가 있다. 컴파일 언어의 경우 소스코드를 작성할 때, IDE에서 대부분의 잠재적인 타입 에러를 잡아주기 때문에 깊이 생각하지 않아도 되는 문제들이 파이썬 같은 동적 언어에서는 문제가 될 수 있다. IDE에서는 문제가 없었지만 런타임에 에러를 발생시키는 경우가 종종있다. 그 중에 하나가 'TypeError: 'NoneType' object is not iterable'에러다. 파이썬에서 반복문에 사용할 객체를 얻어오는 과정에서 발생하는 에러다. 다음 파이썬 코드를 보자. def function1(param1): if param1 == 1: return "abc" elif param2 == 2: return "def" elif par.. 2021. 5. 8.
[Python] 파이참 'Unresolved reference xxx' 에러 해결 방법 파이썬 통합개발환경(IDE)인 파이참(PyCharm)을 이용해서 파이썬 소스코드를 편집하고 있는데 이상한 에러를 만나게 되었다. 사용하는 모듈에 빨간색 줄이 가더니 'Unresolved reference xxx' 에러가 발생했다. 실행환경에 문제는 없어보이는데 이상했다. 대략 다음과 같은 모습이었다. 분명 같은 디렉토리에 Mudule1이라는 파이썬 파일이 존재한다. 그리고 autocomplete 파일에서 이 파일을 불러서 쓰려고 했는데, 같은 디렉토리에 있는 파이썬 파일을 불러올 수 없었다. 이상한 일이다. 해결방법 이 경우 디렉토리를 파이썬 프로젝트의 '소스루트(Sources Root)'로 지정해주면 된다. 프로젝트 디렉토리 창의 src 디렉토리를 우클릭하면 여러 메뉴가 뜬다. 그 메뉴 중에 'Mark.. 2021. 5. 8.
[Python] 날짜 포맷(Date format) 데이터 파싱하기 파이썬의 자료형들 이외에 가장 많이 사용되는 데이터 패턴이 바로 문자열 형태로 표현된 날짜 데이터일 것이다. 문자열 형태로 표현되어 있는 날짜 데이터를 파싱해서 사용하는 경우가 매우 빈번하다. 파이썬에서는 'datetime' 라이브러리를 이용해서 문자열 형태로 표현되어 있는 날짜 포맷 데이터를 파싱할 수 있다. import datetime date_string = '20191101' date_format = '%Y%m%d' try: date_obj = datetime.datetime.strptime(date_string, date_format) print(date_obj) except ValueError: print("Incorrect data format, should be YYYYMMDD") 날짜 데.. 2021. 5. 7.