본문 바로가기
반응형

Language/Python20

python에 rusty를 섞는다?! 파이썬 segmentation fault 원인? python + C 파이썬은 C와 C++을 이용해서 파이썬 함수를 작성하면 확장라이브러리를 만들 수 있다. 네이티브 코드로 만든 파이썬함수는 일반 파이썬 모듈처럼 임포트한 뒤 바로 사용할 수 있다. 그런데 굳이 C와 C++을 이용해서 파이썬 함수를 작성해야하나? 먼저, C와 C++ 라이브러리를 사용할때 필요하기 때문이다. C로 파이썬을 확장하게 되면 Qt같은 덩치큰 여러가지 라이브러리를 파이썬에서 사용할 수 있다. 다음으로, 파이썬은 인터프리터 언어이다보니 CPU에서 바로 실행될 수 있는 C보다 느리기 때문이다. 그래서 많은 계산이 필요한 작업에선 적합하지 않다. 하지만 데이터분석과 같은 작업을 할때는 파이썬처럼 간단한 언어가 필수적인데, 이럴때 계산부분은 C확장 프로그램에 맡기고, 알고리즘 작성하는 작.. 2021. 12. 3.
[python] Class와 __init__함수 Class() 클래스 객체(object)를 만들어내기 위한 틀? 클래스 없이 단순히 def(함수)로만 정의할수도 있지만, 함수가 많아지면 관리하기 힘들어지니까 비슷한 종류?카테고리?의 함수들끼리 class로 묶어서 정의하는걸 권장 #클래스 없이 함수로만 정의할 경우 def some_function(something): print(something) #클래스로 정의할 경우 class SomeClass: def __init__(self,something): self.something = something def some_function(self): print(self.something) __init__ 함수 클래스로 생성된 걸 보면 __init__ 이라는 내장함수가 필요하다. 인스턴스화를 할때 반드시 처음에.. 2021. 9. 6.
[python] Django에서 절대경로 __file__ 로 지정하기 (os.path) django 프로젝트를 진행하던중 로컬 디렉토리에 있는 파일을 읽고 쓰는 작업이 많았다. 그런데 이상하게 상대경로로 지정할 경우 오류가 났고, 절대경로를 직접 지정했을때 정상적이였다... 하지만 코드에 이렇게 지정하게 되면 환경마다 계속 코드를 수정해야하는 문제점이 있을 것이다. 그래서 검색을 통해 알게된 파이썬 디렉토리 절대경로 지정하는 방법! Django에서 유용하다! BASE_PATH = os.path.dirname(os.path.abspath(__file__)) __file__ : python의 예약어로, 현재 실행되는 스크립트 파일 위치 os.path.abspath(path) : 절대경로 반환 os.path.dirname(path) : path의 상위 경로까지 포함해서 반환 그래서 아예 base.. 2021. 9. 6.
[Python] Dict로 문자열 count하기 | setDefault(i,0), get(i,0) 앞에서 counter(), defaultdict()랑 비슷하게 문자열의 count를 셀 수 있는 또 다른 방법이다. 사실 이게 더 일반적이고(내기준) 자주 쓰였던 방식인데, 조금더 간단하게 쓸 수 있는 함수를 찾아서 정리해본다. 일반적인 Dict처리 예를 들어 주어진 단어에 들어있는 각 알파벳 글자의 수를 세어서 사전에 저장해주는 함수를 구현하자면, 주로 이렇게 dict안에 있는지 확인하고, 있으면 기존의 count값에 더해주고 없으면 새로1을 추가했다. def countLetters(word): check={} for letter in word: if letter in check: check[letter]=check[letter]+1 else: check[letter]=1 print(check) wor.. 2021. 7. 12.
[Python] 문자열 애너그램(Anagrams) | Counter(), DefaultDict() 이 문제를 풀다가 애너그램을 찾는 방법에 대해서 정리해본다. 풀이를 하며 Counter를 이용한 방법과 DefaultDict를 이용한 방법 2가지를 배웠다. 요구사항 우선 문제의 요구사항을 정리해보면 이렇다. 애나그램 : 첫번째 문자열을 재배열했을때 두번째문자열이 되면, 두개의 문자열들은 애나그램 쌍이라고 칭한다. 두 문자열을 구성한 알파벳이 같아야하고, 그 알파벳들의 frequency도 같아야함 ex: bacdc와 dcbac는 애나그램 ex: bacdc와 dcbad는 애나그램이 아니다.(문자열길이는 다를수도 있음) 두개의 문자열을 애나그램으로 만들기 위해 필요한 최소문자 삭제수는? ex : a=cde, b=dcf 1.a에서 e삭제 2.b에서 f삭제 a=cd, b=dc -> 애나그램 리턴값 : 2 즉, .. 2021. 7. 12.
[Python] 커스텀한 기준으로 sort()하기 cmp_to_key() 이문제를 풀다가 알게된 새로운함수 python내용 list.sort() 의 key 파라미터로 lambda 함수를 넘겨 주어, element의 정렬 조건을 설정했다. 그러니까 lambda에 정렬기준을 '직접' 입력한 것이다. 예를들어 튜플의 1번째 글자를 기준으로 내림차순 정렬한다고 하면 이렇게 x[1]을 정렬기준으로 지정해줬다. arr = [(1, 2), (2, 3), (1, 3), (2, 4), (3, 4)] arr.sort(key=lambda x: x[1], reverse=True) # 튜플 1번째 값으로 정렬 print(arr) 앞서 한번 정리한적있다. lambda로 sort하는 방법. https://pearlluck.tistory.com/462 [Python] 람다식, lambda로 sorted .. 2021. 7. 12.
[python] 대문자로 변환하기 upper() / capitalize() / title() 해커랭크 이 문제를 풀다가..대문자로 변환하는 upper()만 알고 있어서 조금 헤맸는데 알고보니까 capitalize() 를 알고 있으면 완전 쉬운 문제였다..! 그래서 이번엔 대문자로 변환하는 함수들을 정리해보려고 한다. 대문자로 변환하는 메소드 upper() : 모든알파벳을 대문자로 변환 capitalize() : 맨 첫글자만 대문자로 변환 title() : 알파벳 외의 문자(숫자, 특수기호, 띄어쓰기 등)로 나누어져 있는 영단어들의 첫 글자를 모두 대문자로 실제로 확인해보았다. A='abcd' print(A.upper()) #ABCD print(A.capitalize()) #Abcd print(A.title()) #Abcd B='a2b3c4' print(B.upper()) #A2B3C4 print.. 2021. 7. 11.
[python] 정규표현식과 Re모듈함수(match/search/findall/fullmatch) 정규표현식(Regular Expression) 정규표현식을 지원하기 위해 표준모듈 re 사용 원하는 문자열 패턴을 정의하여, 소스문자열과의 일치여부 판단 정규표현식을 왜 쓰는걸까? 파이썬 문자열에서 기본적으로 in,find(),index() 같은 함수로 문자열이 존재하는지, 어느위치에 있는지 알려준다. 하지만 문자열안에 정수만 추출하고 싶다면 문자열에서 제공하는 함수만으로 한계가 있다. 이때 정규표현식 사용 re모듈 함수 match(패턴,문자열) : 문자열의 처음부터 시작해서 작성한 패턴이 일치하는지 확인 import re print(re.match('a','ab')) # print(re.match('a','ba')) #None search(패턴,문자열) : 문자열 안에 작성한 패턴이 일치하는지 확인, .. 2021. 7. 5.
[python] String을 식으로 반환해주는 eval() 함수 eval(표현식) 매개변수로 받은 String형식의 expression(식)을 실행결과로 반환하는 함수 즉, 하나이상의 값으로 표현될 수 있는 코드를 바로 값으로 반환해주는 함수이다. 예를 들어 eval("1+2") : 1+2 자체가 expression이지만 그 결과값인 3을 반환한다. eval("abs(-8)") : 절대값을 반환해주는 abs표현식의 결과인 8을 반환한다. 보통 input()처럼 간단한 입출력을 실행할때, 문자열을 식으로 입력해서 해당식의 실행결과값을 반환할때 쓰인다. 표현식이 문자열타입인데도 불구하고 eval()을 사용하면 그대로 연산값을 얻을 수 있는 편리함이 있다. x=eval(input("문자열을 입력하세요")) print(x) //입력한 문자 하지만, 사용자가 마음대로 프로그램.. 2021. 6. 22.
[Python] 순열(permutations )과 조합(combinations) 딱 정리 product('ABCD', repeat=2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD permutations('ABCD', 2) AB AC AD BA BC BD CA CB CD DA DB DC combinations('ABCD', 2) AB AC AD BC BD CD combinations_with_replacement('ABCD', 2) AA AB AC AD BB BC BD CC CD DD 출처 https://docs.python.org/ko/3/library/itertools.html 순열 (permutations) 서로다른 n개에서 r개를 선택할때 순서를 고려하여, 중복없이 뽑을 경우의 수 nPr = n! / (n-r)! 예를 들어, A B C.. 2021. 5. 26.
728x90