Programming/Python 18

Q.맥 실리콘 (Macbook Pro M1)에서 파이썬 3.7 버전의 가상환경 만드는 방법은?

환경 MacOS v12.6 Apple M1 Pro chip 파이썬 가상환경 버전 관리를 맥에서 아나콘다 가상환경 구성 -> 윈도우에서 virtualenv 구성으로 하다가 업무용 컴퓨터가 맥 M1으로 바뀌면서 그냥 virtualenv으로 가상환경 구성을 하고 파이썬 버전은 3.9을 고정으로 사용하고 있었다. 참고 맥, 리눅스에서 python anaconda 가상 환경 생성, 확인, 삭제 하기 (mac, linux) Q. jupyter notebook 파일을 실행할 때 새로운 가상환경을 만들고 이용하는 방법은? Q. 윈도우 환경에서 아나콘다 없이 가상환경 설정, 주피터 노트북 사용하는 방법은? 그런데 본격적으로 여러 모델들을 다루게 되면서 3.7 이하의 파이썬 버전에서 빌딩한 모델을 테스트해보게 되었는데 ,..

Programming/Python 2022.11.01

Q. 여러 개의 파이썬 파일로 구성된 프로그램을 exe 실행 파일로 만들기 - cx_Freeze 와 pyinstaller

main.py와 main.py에서 모듈로 import해서 사용하는 py들로 구성된 간단한 애플리케이션을 만들었다. 그런데 이걸 exe파일로 만들어주라고 한다. 응?? 윈도우에 프로그램 깔 때 쓰는 그 .exe 파일? 조금 검색해보니 파이썬이 깔려있지 않은 환경에서도 내가 만든 애플리케이션을 사용할 수 있게 만들어 주는 것이라고 한다. 실제 실행을 할 때는 하나의 .py 파일로 끝나는 앱이든, 여러 개의 .py을 모듈로 불러와서 실행하는 앱이든 큰 차이는 없이, 실행 파일에 대해서만 exe를 만들면 된다. 나는 pyinstaller와 cx_Freeze를 모두 시도해봤는데 내 경험에 미루어보자면, 처음에는 pyinstaller가 간단해보였지만, 결과적으로 cx_Freeze에서 setup.py를 만들고, 필요..

Programming/Python 2021.12.21

배열의 index와 value를 전달해주는 enumerate() 함수

파이썬의 리스트, 튜플 같은 iterable 한 자료형에서 각 요소의 위치와 값을 반환해주는 함수이다. 그런데 그냥 enumerate()함수를 print하면 enumerate object를 반환할 뿐이어서, 우리가 원하는 index, value를 직접 얻을 수가 없다. lst = ['a','b','c','d'] print(enumerate(lst)) >> 그래서 주로 for 문과 함께 쓰인다. dic = {} for k, v in enumerate(lst): dic[k]= v 이렇게 하면 lst의 인덱스를 key, 값을 value로 하는 딕셔너리를 생성할 수 있다. dic >> {0: 'a', 1: 'b', 2: 'c', 3: 'd'}

Programming/Python 2021.06.21

배열에 아이템을 추가하는 메서드 .append(), .extend(), .insert() 비교

파이썬3에서 배열에 아이템을 추가하는 메서드는 .append(), .extend(), .insert() 등이 있는데, 특징에 차이가 있으므로 그 차이를 잘 기억해두자. 1. append() 가장 일반적으로 쓰이는 메서드. 기존 배열의 뒤에 () 안의 아이템이 들어가게 된다. a = ['a','b','c','d'] a.append('a') a >> ['a', 'b', 'c', 'd', 'a'] 문제는 append() 안에 배열을 넣을 경우, 배열 째로 들어가게 된다. a = ['a','b','c','d'] b = ['e','f'] a.append(b) a >> ['a', 'b', 'c', 'd', ['e', 'f']] 2. extend() append() 대신 extend()를 쓰게 되면 배열 안의 각 아..

Programming/Python 2021.06.21

딕셔너리에서 value를 가지고 key 얻기

파이썬의 해시 테이블 자료형인 딕셔너리에서 key를 가지고 값을 얻는 방법은 .get() 메서드를 사용하거나 dict_name[key] 형태로 index 하는 것이다. (참고: rollingsnowball.tistory.com/108) 그런데 value를 알고 있을 때, 그 값을 가지는 key를 찾는 것은 좀 더 까다롭다. 1. dict_name.items()를 통해서 key, value 쌍을 만들로 for 반복문을 돌려, 일일이 원하는 값과 같은지 비교한다. my_dict ={"John":1, "Michael":2, "Shawn":3} def get_key(val): for key, value in my_dict.items(): if val == value: return key return "There..

Programming/Python 2021.05.07

[AI class day11] 파이썬 넘파이 python numpy TIL

오늘의 감상: 그래도 git과 numpy 모두 지난 에서 강의를 들었던 과정이라 week 1의 알고리즘 week2 인공지능을 위한 수학 수업 보다는 마음 편하게 들을 수 있었다. 지난 week2에서 배운 선형대수학 개념을 numpy로 구현하는 것은 numpy 문법 보다 선형대수학에 대한 복습이 필요한 것 같다. 행렬식 sigular matrix 고유값, 고유벡터 L@ norm 1. 파이썬의 컴퓨팅 라이브러리, numpy numpy를 이용해서 데이터를 다뤄봅시다! I. Numpy 시작하기 import numpy as np II. Numpy로 연산하기 vector와 scalar 사이의 연산 벡터의 원소에 대해서 연산을 진행 x = np.array([1,2,3]) c = 5 print("더하기: {}".for..

Programming/Python 2021.05.04

filter() 리스트, 튜플 등에서 조건에 맞는 요소만 추려내는 내장함수

filter(조건 함수, 순회 가능한 데이터) 입력: 순회가능한 데이터 (리스트, 튜플), 조건함수 (파이썬 내장함수, 사용자 정의함수) 출력: filter객체 filter 는 리스트, 튜플, 셋 같은 순회 가능한 자료 타입 (iterable data type)의 원소들을 특정 함수를 통해 걸러서 출력하는 내장 함수이다. lst = [1,2,3,4,5] def over_4(x): return x > 4 list(filter(over_4, lst)) [5] 4이상의 수만 리턴하는 함수 over_4 를 정의하고, filter 내에 함수와, 리스트를 넣었더니, 함수의 조건에 해당되는 요소들만 출력되었다. 함수를 미리 정의하지 않고 람다 함수를 활용해서 한 줄에 처리할 수도 있다. list(filter(lamb..

Programming/Python 2021.05.04

.get() 딕셔너리에서 key를 사용해 value 얻기

dict_name[key] 입력 : key 출력: value 파이썬의 딕셔너리는 key, value 쌍으로 이루어진 해시형 자료구조이다. john = {'phone': '01840125784' , 'birthday': '19930512' , 'e-mail': 'johndoe@gmail.com' } 특정 key 값에 있는 value를 호출하고 있으면, dict_name[key] 를 사용하는데, dict_name.get(key)를 써도 똑같은 값을 return 한다. print(john['phone']) print(john.get('phone')) >> '01840125784' '01840125784' 둘의 차이점은 딕셔너리에 없는 key 값으로 호출할 때 있다. dict_name[key] 는 KeyErro..

Programming/Python 2021.05.04

map() - 리스트, 튜플 등에서의 각 요소를 지정된 함수로 처리해주는 내장함수

map(조건함수, 순회 가능한 데이터) 입력: 순회가능한 데이터 (리스트, 튜플), 조건함수 (파이썬 내장함수, 사용자 정의함수) 출력: map객체 리스트의 요소들인 숫자들을 문자열로 바꾼 새로운 리스트를 만들고 싶으면 어떻게 해야할까? for 문을 이용해 아이템 하나씩 바꿀 수도 있지만 너무 번거롭다. lst = [3, 6, 8, 2, 3] str_lst = [] for i in range(len(lst)): str_lst.append(str(lst[i])) str_lst >> ['3', '6', '8', '2', '3'] map() 을 쓰면 지정된 함수를 리스트 각 요소에 한꺼번에 적용해준다. lst = [3, 6, 8, 2, 3] str_lst = list(map(str, lst)) str_lst ..

Programming/Python 2021.04.26

set() - from list to set 리스트를 해시형 데이터 타입인 셋으로 변환하기

set 은 집합 자료형이다. 집합 연산을 쉽게 할 수 있다. 리스트를 셋으로 만들어 주면 데이터 타입이 1)해시형 데이터 타입 셋으로 바뀌면서 2)중복을 제거하고 3)정렬해준다. l = [1,2,3,4,5,1] ls= set(l) ls >> {1, 2, 3, 4, 5} 이와 같은 특징 때문에 중복을 제거하고 싶거나 정렬을 계속 해줘야 할 때 set 자료형을 활용한다. 리스트 말고 문자열도 set()으로 셋으로 만들어 줄 수 있다. s = "Hello" ss = set(s) ss >> {'H', 'e', 'l', 'o'} 정렬하고, 중복을 제거하는데, 대문자가 우선한다. 근데 리스트의 원소도 리스트면 set 변환이 되지 않고 type 에러가 난다. ll = [[1,1],[2,1],[1,2],[3,4],[2..

Programming/Python 2021.04.26

[AI class day 5] 프로그래머스 코딩 테스트 문제 풀기 TIL

*lv 1부터 lv 4까지의 프로그래머스 문제들을 푸는 시간. 일단 lv1과 lv2를 최대한 풀어보는 것을 목표로 시작 lv1_완주하지 못한 선수 속도가 문제다. 해시형 자료 구조가 유리하다. 리스트를 딕셔너리로 바꿔서 해결 lv1_좌석 구매 마찬가지 키값이 중요하지는 않아서 set으로 바꿔서 해결 lv1_대중소 괄호 짝 맞추기 괄호 문제는 가장 마지막에 열린 괄호부터 닫아야 하기 때문에 LIFO 스택을 활용한다. 스택은 리스트를 활용하여 구현한다. * 참고 딕셔너리는 key, value 쌍인데 key를 가지고 value를 찾는게, value를 가지고 key를 찾는 것 보다 훨씬 간결하다. 찾고 싶은 것을 value에 넣자. lv1_세 소수의 합 문제 지문에 아예 에라토스테네스의 체를 활용해서 풀라고 제..

Programming/Python 2021.04.24

[AI class day 4] 파이썬 코딩테스트 문제 풀이 TIL

*3일차에 이어서 알고리즘 문제 풀이를 하고 있다. 2번 문제 같은 경우에는 너무 어렵게 느껴졌다. 다른 문제들은 몇 가지 중요한 key point만 잡으면 풀 수 있겠다 싶었는데, 2번 문제의 경우는 해설과 모범 답안을 보고도 헤매는 느낌. --> 기본기가 너무 없는 것 같아서 라는 책을 사서 읽고 있는 중인데, '다이내믹 프로그래밍'은 복잡하고 어렵다는 구절이 나왔다. 내가 헤맨 2번이 바로 다이나믹 프로그래밍. 지금 이해 못하더라도 조금 위안을 얻었다. 일단 넘어가고 좀 더 쉬운 것들 부터 이해하려고 노력하려 한다. 1. 힙 Heap 대표 문제 풀이 : 더 맵게 힙은 특정 특성을 가지고 있는 완전 트리의 한 종류 (최대 힙/ 최소 힙) 참고 : 힙 정리 *섞어서 새로운 음식을 만들어 내는 공식이 있..

Programming/Python 2021.04.23

[AI class day 3] 파이썬 코딩테스트 문제 풀이 TIL

* 3일차는 자료구조와 알고리즘 수업을 지나서, 프로그래머스 사이트나 입사용 코딩 테스트에서 많이 접하는 알고리즘 문제 풀이를 하는 동영상 강의를 들었다. 본 강의는 프로그래머스 사이트의 [Python/문제풀이] 파이썬을 무기로, 코딩테스트 광탈을 면하자! 와 동일한 것 같다. 커리큘럼이 동일하다. 나처럼 코딩테스트 문제 풀이에 익숙하지 않거나, 문제는 어찌저찌 풀었지만 효율성 테스트에서 계속 실패하는 사람들은 문제에 어떻게 접근할 것인지 힌트를 얻기에 도움이 될 것 같다. 1. 해시(Hash) 대표 문제 풀이: "완주하지 못한 선수" * 참고* 1. 문제의 데이터 크기를 잘 봐야 한다. 2. 문제의 제한 사항을 잘 읽어야 한다. 이 문제는 해시 Hash 자료 구조로 풀면 편리하다. 해시란? key - ..

Programming/Python 2021.04.22