반응형
  • 람다함수를 사용하면 코드가 간결해진다
  • 메모리 사용이 효율적이다.
# 람다함수 선언 방법
lambda a : a-1

# 호출방법 1 : 그대로 호출
print ((lambda a:a-1)(10))

# 호출방법 2 : 변수에 담아서 호출
minus_ten = lambda a : a-10
print (minus_ten(100))

# 람다함수 if 문 사용
def is_positive_num(a):
  if a > 0:
    return True
  else:
    return False

lambda a : True if a > 0 else False

개인적으로 함수 자체를 호출하는 방법보다는 변수에 담아서 호출하는게 가독성에는 더 좋아보인다.

 

728x90
반응형

'Development > Python' 카테고리의 다른 글

파이썬 문법 : class 속성들  (0) 2023.03.02
파이썬 문법 : map, filter 함수  (0) 2023.02.28
파이썬 문법 : 키워드 가변 매개변수 kwargs  (0) 2023.02.27
파이썬 문법 : 튜플  (0) 2023.02.27
Python 가상환경  (0) 2022.10.27
반응형
  • kwargs 는 keyword arguments
  • 매개변수 앞에 ** 가 붙는다
  • 딕셔너리 로 인식한다.
def comment_info(**kwargs):
  print(kwargs)
  for key,value in kwargs.items():
    print(f'{key}:{value}')

comment_info(name='test1', age=10)

output
{'name': 'test1', 'age': 10}
name:test1
age:10

추가 사항 : 추가적으로 *args 는 임의의 개수의 argument 를 의미한다. kwargs 와는 달리 tuple 로 인식한다.

728x90
반응형

'Development > Python' 카테고리의 다른 글

파이썬 문법 : map, filter 함수  (0) 2023.02.28
파이썬 문법 : 람다 함수  (0) 2023.02.27
파이썬 문법 : 튜플  (0) 2023.02.27
Python 가상환경  (0) 2022.10.27
Ubuntu 에서 파이썬 버전 확인 및 변경  (0) 2022.10.25
반응형
  • 튜플은 () 로 정의된다
  • 튜플은 값을 바꿀수 없다.
t1 = ()
t2 = (1,)
t3 = (1,2,3)
t4 = 1,2,3
t5 = ('a', 'b', ('ab', 'cd'))
  • 1개의 요소만 가질때에는 콤마(,) 를 붙여야 한다.
  • 괄호가 생략 가능하다
  • 개수가 정해지지 않은 매개 변수로 사용된다. (* 가 매개변수 앞에 붙는다.) = 위치가변 매개변수
def print_fruits(*args):
  print(args)
  for arg in args:
    print(arg)

print_fruits('apple', 'banana', 'melon')

output
('apple', 'banana', 'melon')
apple
banana
melon

 

728x90
반응형
반응형

오랜만에 다시 읽게 되는 알고리즘 책이다. 이 책에 나오는 주요 알고리즘에 대한 내용은 다음과 같다. 

문제해결, 알고리즘 분석
해싱, 힙, 정렬, 이진트리, 그래프

우리가 알고리즘 공부를 할때 기본적으로 배워야 하는 알고리즘 들이다. 약간 전공서적 같은 느낌이 들긴 하지만 그것보다는 내용이 좀더 친절하게 나와 있다.

히자만 읽다보면 어려운 내용들이 많이 섞여 있다. 기초에 관련된 책이긴 하지만 난이도는 있는 책이다. 그리고 주요 코드들은 파이썬으로 되어있는데 파이썬을 모른다고 하더라도 크게 문제가 될것 같지는 않다. 코드 부분에 대한 설명은 거의 라인 단위로 설명을 해주고 있기 때문에 어떤 언어든 프로그래밍을 해본 사람이면 이해할수 있을 것이다. 

복습 차원에서 각 장 마지막에 있는 연습문제들은 한번씩 스스로 풀어보면 도움이 많이 될것이다. 어찌됐건 알고리즘 관련된 내용들은 이해도 이해 이이지만 한번씩 스스로 풀어보는게 중요하기 때문이다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형
반응형

Python Virtualenv

  • 프로젝트별 종속성 문제를 해결하기 위해서 가상환경을 제공한다.

  • 동시에 여러개의 프로젝트 진행시 각각의 파이썬 버전이 다를경우 사용한다.

  • virtualenv 환경 구성

    pip install virtualenv
    
    D:\STUDY\study_python>virtualenv py3.8-env
    created virtual environment CPython3.8.5.final.0-64 in 6461ms
      creator CPython3Windows(dest=D:\STUDY\study_python\py3.8-env, clear=False, global=False)
      seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\SDS\AppData\Local\pypa\virtualenv)        \Local\pypa\virtualenv)
        added seed packages: pip==22.2.2, setuptools==49.6.0, wheel==0.37.1
      activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
    • 1라인 : virtualenv 를 pip 를 이용해서 설치한다.

    • 3라인 : 가상환경을 생성한다.

    • 가상환경을 실행하기 위해서는 activate 명령어를 실행하면 된다. (window 의 경우 Script 폴더에 있고 리눅스인경우 bin 폴더 안에 생긴다.)

      (py3.8-env) D:\STUDY\study_python\py3.8-env\Scripts>

      가상환경을 실행하면 위와 같이 환경 이름이 앞에 붙는다.

    • 가상환경을 종료하기 위해서는 deactivate 명령어를 실행한다.

  • virtual 환경에 구성된 패키지 export

    pip freeze > req.txt
    
    req.txt
    certifi==2022.9.24
    charset-normalizer==2.1.1
    idna==3.4
    requests==2.28.1
    urllib3==1.26.12
  • req.txt 를 인스톨 하려면 다음과 같이 하면 된다.

    pip install -r req.txt
728x90
반응형
반응형

Ubuntu 에서 파이썬 설치 위치 확인

DESKTOP-MBRI3VL:~$ python --version
Python 2.7.17
DESKTOP-MBRI3VL:~$ python3 --version
Python 3.6.9

파이썬을 설치하다 보면 2.X 도 있고 3.X 도 있다. 위와 같이 각각의 버전을 확인해보면 설치된 버전을 확인할 수 있다. Ubuntu를 설치하면 기본적으로 2.7을 path 로 설정한다.

아래와 같이 명령어를 실행 하면 설치된 파이썬 목록들이 나완다. (정말 이것 저것 많다.)

DESKTOP-MBRI3VL:~$ ls /usr/bin | grep python

python-config
python2
python2-config
python2.7
python2.7-config
python3
python3-config
python3-jsondiff
python3-jsonpatch
python3-jsonpointer
python3-jsonschema
python3.6
python3.6-config
python3.6m
python3.6m-config
python3.7
python3.7m
python3m
python3m-config
x86_64-linux-gnu-python-config
x86_64-linux-gnu-python2.7-config
x86_64-linux-gnu-python3-config
x86_64-linux-gnu-python3.6-config
x86_64-linux-gnu-python3.6m-config

그래서 update-alternatives를 사용해서 파이썬에 대한 버전을 변경해보려고 한다. update-alternatives는 심볼릭 링크를 관리해 주는 리눅스 프로그램이다.

DESKTOP-MBRI3VL:~$ ls -al  /usr/bin | grep python
lrwxrwxrwx  1 root   root           26 Mar 27  2018 dh_pypy -> ../share/dh-python/dh_pypy
-rwxr-xr-x  1 root   root         1056 Apr 16  2018 dh_python2
lrwxrwxrwx  1 root   root           29 Mar 27  2018 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx  1 root   root           23 Jul  2 00:56 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx  1 root   root           23 Jun 29 20:45 pdb3.6 -> ../lib/python3.6/pdb.py
lrwxrwxrwx  1 root   root           23 Dec 10  2021 pdb3.7 -> ../lib/python3.7/pdb.py
lrwxrwxrwx  1 root   root           31 Oct 25  2018 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx  1 root   root           26 Mar 27  2018 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx  1 root   root            9 Apr 16  2018 python -> python2.7
lrwxrwxrwx  1 root   root           16 Apr 16  2018 python-config -> python2.7-config
lrwxrwxrwx  1 root   root            9 Apr 16  2018 python2 -> python2.7
lrwxrwxrwx  1 root   root           16 Apr 16  2018 python2-config -> python2.7-config
-rwxr-xr-x  1 root   root      3624880 Jul  2 00:56 python2.7
lrwxrwxrwx  1 root   root           33 Jul  2 00:56 python2.7-config -> x86_64-linux-gnu-python2.7-config
lrwxrwxrwx  1 root   root            9 Oct 25  2018 python3 -> python3.6

위에서 보면 python의 심볼릭 링크는 python2.7 로 되어있고 python3 에 대한 링크는 python3.6 으로 되어있다. 이것을 변경하려고 한다.

DESKTOP-MBRI3VL:~$ sudo update-alternatives --config python
update-alternatives: error: no alternatives for python
DESKTOP-MBRI3VL:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
DESKTOP-MBRI3VL:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python (python) in auto mode
DESKTOP-MBRI3VL:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 3
update-alternatives: using /usr/bin/python3.7 to provide /usr/bin/python (python) in auto mode

1번 라인 : python 버전을 변경하는 명령어 인데 현재는 등록되어 있는게 없기 때문에 에러가 난다.

3번 라인 : python 명령어를 2.7로 연결하고 1번으로 할당했다.

5번 라인 : python 명령어를 3.6로 연결하고 2번으로 할당했다.

7번 라인 : python 명령어를 3.7로 연결하고 3번으로 할당했다. (2.7, 3.6, 3.7 이 설치되어있었다.)

DESKTOP-MBRI3VL:~$ update-alternatives --config python
There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.7   3         auto mode
  1            /usr/bin/python2.7   1         manual mode
  2            /usr/bin/python3.6   2         manual mode
  3            /usr/bin/python3.7   3         manual mode

Press <enter> to keep the current choice[*], or type selection number: 3

다 등록을 하고 1번 라인에 썼던 명령어를 다시 실행하면 위와 같이 나와서 사용할 버전을 선택할 수 있다.

DESKTOP-MBRI3VL:~$ python --version
Python 3.7.5

버전을 확인해 보면 위와 같이 나온다.

728x90
반응형

'Development > Python' 카테고리의 다른 글

파이썬 문법 : 튜플  (0) 2023.02.27
Python 가상환경  (0) 2022.10.27
파이썬 입력값 받기  (0) 2021.08.25
파이썬 문법 : 배열 초기화  (0) 2021.08.25
Python 으로 파일 내용 변경 하기  (0) 2020.10.20
반응형

 

## 공백으로 input 값 받는 방법
data = list(map(int, input().split()))

# 결과
1 2 3
[1, 2, 3]

파이썬으로 입력값을 받을때 위와 같이 코드를 작성하면 간편하다. (주로 코딩테스트의 입력값 받을때 사용하면 된다.)

입력값이 공백이 아닌 콤마(,) 로 구분될 경우 split(",") 으로 변경해서 코드를 작성하면 된다.

 

728x90
반응형
반응형

배열을 초기화 시에 아래와 같이 사용하면 유용하게 사용가능 하다. 

# index가 필요 없는 반복문일 경우 _ 사용, 배열 초기화시 사용
array = [[0] * 3 for _ in range(10)]
print(array)

# 결과값
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

_ 는 for 문 반복시 index 가 필요없는 단순 반복을 할 경우에 사용한다.

 

728x90
반응형
반응형

이 책을 읽기전에 저자의 알고리즘 동영상 강의를 몇번 본적이 있었다. 그래서 이 책이 나왔을때 어떤 내용으로 구성이 되어있을지 궁금했다. 그런데 마침 이렇게 한빛미디어 나는 리뷰어다를 통해서 리뷰를 작성하게 되었다.

- PART 01

처음에는 코딩 테스트, 또는 알고리즘 문제 풀이를 어떻게 준비를 해야 하는지 사전 지식을 알려준다. 코딩을 위한 준비라든지 최근 몇년간 코딩테스트 유형들을 설명해준다. 그리고 취업관련 프로세스나 준비 방법들도 간단히 소개해 주고 있다.

- PART 02 ~ PART 03

PART02 와 PART03 에서는 본격적으로 코딩테스트를 위한 이론과 기출을 풀어볼수 있다. PART02 에서는 주요 알고리즘에 대한 설명과 연관된 문제를 풀어볼 수 있다. 알고리즘 관련된 책들이 비슷한 구성을 가지고 있다고 생각이 되는데 각각의 특징은 설명을 어떻게 해주냐인것 같다. 이 책은 그런점에서 이해하기 쉽게 설명을 해주고 있다. 그리고 그림이나 음영을 적절하게 써줘서 읽어보는데 지루하지 않았다.

- PART 04

이 책의 코드들은 파이썬으로 되어있다. 그렇기 때문에 파이썬에 대해서 알 필요가 있는데 모른다고 해서 책을 못읽는 것은 아니다. 이렇게 부록에 파이썬 문법들을 넣어줬다. 물론 파이썬에 대한 모든 내용들이 들어간것은 아니지만 코딩테스트 문제를 풀기 위해서 이정도 알고 있으면 충분히 문제 푸는데에는 문제가 없을것이다. 그리고 코딩테스트 코드 작성시 유용하게 사용되는 패턴들도 있어서 참고하면 문제 푸는데 많은 도움이 될것같다.

그리고 앞에서 설명했던 알고리즘들 이외에도 코딩테스트에 유용한 알고리즘들이 부록에 많이 담겨져 있다. 우리가 수학으로 배웠던 내용들이 주로 포함되어 있다. 나같은 경우에도 실제로 코딩테스트 문제에서 알고 있으면 쉽게 풀었지만 막상 모르고 풀면 코드 작성하기가 힘들었던 문제 유형들이다. 

- 온라인 강의

마지막으로 이 책의 온라인 강의를 볼수 있다.  요즘 책들은 거의 온라인 강의를 포함하는 경우가 많은데 이 책도 이렇게 저자의 온라인 강의를 볼 수 있다. 책은 책대로 읽고 온라인 강의도 본다면 이해하는데 도움이 될것이다. 이 책 보기전에도 몇번 동영상 강의를 봤었는데 저자분이 목소리가 낮고 차분하고 과장되지 않아서 귀에 더 잘 들렸다. 

- 마무리

코딩 테스트라는게 아무래도 이론만 가지고는 결과를 보는건 거의 불가능한 시험이다. 얼마나 많이 풀어보고 다양한 유형의 문제를 경험해봤는지가 가장 중요하다고 생각한다. 그렇다는건 결과적으로 내가 많이 문제를 풀어봐야 한다.어떤 알고리즘책을 읽든 그것은 변하지 않는다. 하지만 처음 코딩테스트를 준비하거다 기본부터 파이썬으로 준비를 하고 싶은 분들에게는 한번쯤 읽어보면 꼭 도움이 될거라 생각이 든다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형

+ Recent posts