이번 시간에는 파이썬의 list comprehensions에 대해 알아봅시다. list를 간단하게 초기화 할 수 있는 방법입니다. 먼저 예제 3개를 보도록 하겠습니다. 예제 1번입니다. [k for k in range(10)]이 있네요. 뒤에서부터 해석해 봅시다. 일단 for K in A를 먼저 봐야 하는데요. A가 range(10)이였습니다. 게다가, range는 iterable 해요. 그러면, K의 값은 0부터 9까지 된다는 의미인데요. for 앞에 K가 붙어 있어요. 그러면 K값이 list의 원소가 된다는 의미입니다. 그러면, list에 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]가 나와야 할 텐데요. 정말 그렇게 나왔나 볼까요? 정말 그렇게 나왔습니다. 이제 필터링을 해 보겠습니다. 아..
전체 글 검색 결과
linux에서 java를 설치하는 글을 처음 보다 보면 /etc/profile이 무엇이고, home directory에 있는 .profile이 무엇인지 궁금하실 텐데요. 2개의 차이를 간단하게 알아보겠습니다. cho의 홈 디렉토리에 .profile 파일이 있습니다. 끝에 줄에 export GH=10이 있는데요. 이는, 환경 변수 GH를 등록하고, 그 값을 10으로 설정한다는 의미입니다. source .profile 명령어를 치시고, echo $GH를 치시면 10이 나옴을 알 수 있어요. 현재 누가 로그인 되어 있는지 알아보기 위해서 w 명령어를 쳐 보았는데요. user가 cho임을 알 수 있어요. cho 프로필에 있는, 환경변수 GH가 10이므로, echo $GH를 입력하면 10이 나옴을 알 수 있어요...
c++에서 string을 처리할 때, 구분자가 여러 개 붙어 있는 경우 split를 어떻게 할까요? c의 string.h에서는 strtok으로 된다고 하는데. 한 가지 방법 중 하나는, 문자열을 순회하면서, 해당 문자가 구분자인지 검사하는 것입니다. 제 목표는 token_ret 메서드를 구현하는 것입니다. 2번째 인자는 delimiter들을 넘깁니다. 쉽게 말해 구분자인데요. :과 -와 공백을 넘겼습니다. 이들을 기준으로 split 하겠다는 의미입니다. 실행 결과는 위와 같이 나와야 해요. 인풋이 이렇다고 해 봅시다. 양 끝단 처리가 어려울 듯 하니, 더미 2개를 넣읍시다. 하나는 문자열 시작 위치 바로 전인 -1, 다른 하나는 문자열의 끝인 size of string length를 넣을 겁니다. 이 둘..
함수 안에서 yield를 본 적이 있을 겁니다. 함수 안에서 이것을 쓰게 되면, 제너레이터가 됩니다. 이 문서에서는 어떻게 제너레이터를 쓰고 왜 쓰는지에 대해서 언급하지는 않습니다. 함수 안에서 yield를 썼을 때, 실행 문맥에 어떤 것을 저장하고 있길래, yield가 나타나면, 실행을 양보하고, 다시 foo를 호출하면, 그 다음 위치부터 실행시킬 수 있는지에 대해서 간단하게 고찰해 보겠습니다. main에서 foo를 호출했을 때를 생각해 봅시다. 이 때 foo(a)의 위치를 2, 그 다음 줄에 위치해 있는 a = a + 1을 위치 3이라고 해 보겠습니다. foo(a)를 호출하고, 리턴이 되면, 위치 3에 있는 a = a + 1이 수행됩니다. 그림으로 그려 보면 위와 같습니다. 이는, 함수를 호출할 때 ..
안녕하세요. 이번 시간에는 Collections의 reverse 메소드에 대해 알아보도록 하겠습니다. 사실 오늘 알게 된 메소드이기도 합니다. 먼저 메소드의 설명을 보겠습니다. 리스트의 order를 뒤집는다는 설명만 되어 있어요. 예를 들자면 list에 5, 4, 3, 2, 1 순서가 있었다면, reverse를 호출한 후에는 1, 2, 3, 4, 5가 된다는 말입니다. 대표적인 것으로 ArrayList와 LinkedList가 있는데요. 보통 저는 ArrayList의 순서를 많이 뒤집는 편입니다. 위 예제 프로그램을 보겠습니다. ArrayList에 1부터 10까지를 차례대로 넣었습니다. 그리고, 8번째 줄에 Collections의 reverse 메소드를 호출하였습니다. 결과는 어떻게 나올까요? 순서가 뒤집..
최근댓글