전체 글
-
Coalesce in Python => dict.get("name", "nothing")카테고리 없음 2022. 8. 5. 15:43
어디서 문제가 생겼나? dictionary 에서 id, type, value, children 4개를 key 로 놓는 상황이었는데. 여기서 type, value 값이 다른 리스트와 같은 것들을 추려내야만 했다. 하지만, type 하나만 있고 value 는 없거나, value 는 있는데 type 은 없거나 이런 케이스가 있었기 때문에, 모든 원소가 type, value 를 포함하고 있다고 생각하고 for 문을 돌리면 에러가 발생했다. 무엇을 배웠나? MYSQL 에서 Coalesce 로 사용하던 함수가 파이썬에서는 dict.get("name", 원하는 대체값)으로 사용할 수 있다. 즉, dict["name"] = 0, null 등의 값일 경우에는 "원하는 대체값"을 반환해준다. 이 방식으로는 null 이 등..
-
String 자료형을 List 로 한번에 바꾸는 eval(string) 사용법카테고리 없음 2022. 8. 3. 18:53
어디서 문제가 생겼나? 파이썬 모듈을 만들려고 짜는 도중, '[{~~},{~~}]' 이런 식으로 배열 안에 값이 담겨 있었다. 리스트이기 때문에 바로 for 문으로 돌려서 꺼내려고 했는데, String 형태이기 때문에, ' [ { s t r i n g 등 모든 문자 단위로 갈려서 나왔다. 따라서 list 구문이지만, string 형태인 것을 list 로 다시 바꿔줄 방법을 찾아보았다. 무엇을 배웠나? eval(string) 함수를 사용하면 list 자료형으로 바뀌게 된다. eval(string) 함수는, 안에 string 자료형으로 적혀진 구문을 실행시킨다. 즉, eval("2+2") = 4가 나온다. 주의할 점은, 구분을 넣고 싶다면 양쪽 "" 를 잊지 않는 것이다. reference: https://..
-
JAVA - 핸드폰 번호 가리기 (프로그래머스)카테고리 없음 2022. 8. 1. 21:15
어디서 문제가 생겼나? 프로그래머스 - 핸드폰 번호 가리기 문제. Char, String 의 내장함수가 잘 기억나지 않음. 무엇을 배웠나? 1. String의 길이는, String.length() 를 사용한다. 2. String.substring(start_num, end-num->선택) 을 쓴다면, String 을 원하는 구간만큼 잘라낼 수 있다. 타인의 풀이 String은 Immutable(불변)이기 때문에, index로 접근하여 값을 바꿀 수 없다. 하지만 이런 경우 String.toCharArray() 를 쓴다면, char들로 이루어진 char[] 배열이 형성된다. 그 다음엔 ch[i] 인덱스로 접근하여 배열 내 요소의 값을 바꿔줄 수 있다. 그 다음, 정답 출력을 위해 문자열 배열을, Strin..
-
python source code 에서 AST(추상구문트리) 추출카테고리 없음 2022. 7. 27. 22:27
어디서 문제가 생겼나? python 소스 코드에서 ast 를 추출하는 py 코드를 깃허브에서 보면서 이해가 잘 가지 않았다. 그래서 ast 모듈에 대해 공부해보았다. 이 과정을 통해, 내가 ast 추출로 작성할때, 파이썬 코드를 어떤 형태로 입력에 넣어주어야 하는지 방법을 찾았다. 무엇을 배웠나? ast 모듈에 내장되어 있는 ast.parse(string text) 를 통해 원하는 구문을 ast 객체 형태로 바꿀 수 있다. 이것이 어떤 형태인지 직접 출력하여 확인하고 싶다면. ast.dump(ast.parse(text)) 형태로 표현하면 된다. source code에는, 변수 선언, 함수 선언부터, 대입(=), 연산(+,-, / ), 비교, 클래스 선언, 상속 등 많은 구성요소들로 이루어져 있다. 따라서..
-
collections 모듈의 deque란?카테고리 없음 2022. 7. 27. 15:19
어디서 문제가 생겼나? python 소스 코드를 Ast 로 바꾸는 과정에서 deque 가 사용되었다. 무엇을 배웠나? 우리의 자전거 도둑을 막기 위한 자물쇠의 비밀번호 입력을 생각해보자. 비밀번호는, 만약 3자리 숫자라면, () () () 일 것이고, 각각의 () 에는 한 자리 숫자만 보인다. 하지만 그 한 자리 숫자가 0부터 1,2,3...9 까지 올 수 있기 때문에, 사실 원형으로 한 바퀴 둘러서, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 가 있는데 이 중에서 우리가 돌리는 것에 따라서 (0,1,2....9) (1,2,3...0) (2,3....1) (3,4,...) 등등 이렇게 순서가 달라질 수 있다. deque 도 비슷한 기능이 있다. deque의 rotate 함수를 이용하면. (1,2..
-
io.StringIO()란?카테고리 없음 2022. 7. 27. 14:37
어디서 문제가 생겼나? NLP 구현을 위한 코드를 찾아보다가, 일반 파이썬 소스 코드를 AST 형태로 바꿔놓는 코드를 읽다가, buf = StringIO() 라는 부분에서 처음 마주했다. StringIO() 가 궁금했다. 어떤 것을 배웠나? StringIO() 는 문자열을 입력받음에도, 이를 파일처럼 간주하고 작업할 수 있게 해주는 도구이다. 파일에만 쓸 수 있는 함수들이 따로 있기 때문에, 문자열을 파일로 퉁 쳐 주는 역할인 것 같다. 아래의 위키 독스 예제를 빌려오면. with io.StringIO() as f: result = execute(f) print(result) 처럼 사용할 수 있다. io 라이브러리를 import 하여 사용하면 된다. + 개념 io 모듈은, input 과 output 을 ..