ubuntu 16.04 LTS에서 python 3.8 설치

 

$ sudo apt update

$ sudo apt install software-properties-common

$ sudo add-apt-repository ppa:deadsnakes/ppa

$ sudo apt update

$ sudo apt install python3.8

key 기준으로 정렬

다른 시퀀스 자료형과 같이 sorted 함수 사용

 

value 기준으로 정렬1

items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.

d = {"TV": 2000000,
    "냉장고": 1500000, 
    "책상": 350000, 
    "노트북": 1200000, 
    "가스레인지": 200000, 
    "세탁기": 1000000}
sd = sorted(d.items(), key=lambda x: x[1], reverse=True)
for i in sd:
    print("{0}: {1}".format(i[0], i[1]))

 

value 기준으로 정렬2

import operator
d = {"TV": 2000000, 
    "냉장고": 1500000, 
    "책상": 350000, 
    "노트북": 1200000, 
    "가스레인지": 200000, 
    "세탁기": 1000000}
sd = sorted(d.items(), key=operator.itemgetter(1), reverse=True)
for i in sd:
    print("{0}: {1}".format(i[0], i[1]))
  • 수치 연산 함수
    •  abs
      • 인자로 숫자를 전달하면 그 숫자의 절대값을 반환하는 함수
    • divmod
      • 첫 번째 인자를 두 번째 인자로 나눴을 때의 몫과 나머지를 튜플 객체로 반환하는 함수
    • pow
      • 첫 번째로 전달된 인자 값에 대해 두 번째로 전달된 인자 값으로 제곱한 결과를 반환하는 함수
  • 시퀀스/반복 가능한 자료형을 다루는 함수
    •  all
      • 반복 가능한 자료형인 List, Tuple, Set dictionary, 문자열 등을 인자로 전달하여 항목 모두가 True로 평가되면 True를 반환하고, False로 평가되는 항목이 하나라도 있으면 False를 반환하는 함수
    • any
      • 반복 가능한 자료형인 List, Tuple, Set, dictionary, 문자열 등을 인자로 전달하여 항목 모두가 False로 평가되면 False를 반환하고, True로 평가되는 항목이 하나라도 있으면 True를 반환하는 함수
    • enumerate
      • List, Tuple, 문자열과 같은 시퀀스형을 입력받아 인덱스를 포함하는 Tuple 객체를 항목으로 구성하는 enumerate 객체를 반환하는 함수
    • filter
      • 조건에 해당하는 항목을 걸러내는 함수
    • list, tuple, set, dict
      • 반복 가능한 자료형을 인자로 전달 받아 각각 리스트, 튜플, 셋, 딕셔너리로 변환해 반환하는 함수
    • map
      • 두 번째 인자로 반복 가능한 자료형을 전달 받아 자료형의 각 항목에 대해 첫 번째 인자로 전달 받은 함수를 적용한 결과를 맵 객체로 반환하는 함수 
    • max
      • 반복 가능한 자료형을 인자로 전달받아 항목 중 가장 큰 값 반환
    • min
      • 반복 가능한 자료형을 인자로 전달받아 항목 중 가장 작은 값 반환
    • range
      • 첫 번째 인자로 전달된 시작 값, 두 번째 인자로 전달된 종료 값, 세 번째 인자로 전달된 증감치로써 시퀀스형 객체를 생성하는 함수
      • 이 때, 두 번째 인자로 전달된 종료 값은 포함되지 않음
    • sorted
      • 반복 가능한 자료형을 인자로 전달받아 항목들로부터 정렬된 리스트를 생성해 반환하는 함수
    • zip
      • 둘 이상의 반복 가능한 자료형을 인자로 전달받아, 동일 위치의 항목을 묶어 튜플을 항목으로 구성하는 zip객체를 생성하는 함수
      • 이 때, 인자로 전달된 객체는 동일 자료형이면서, 항목의 개수가 같아야 함
  • 변환 함수
    •  chr
      • 정수 형태의 유니코드 값을 인자로 전달받아 해당 코드의 문자를 반환하는 함수
    • ord
      • 문자를 인자로 전달 받아 유니코드 값(10진 정수)을 반환하는 함수
    • hex
      • 10진 정수 값을 인자로 전달 받아 16진수로 변환된 값을 반환하는 함수
    • int
      • 인자로 전달된 숫자 형식의 문자열, 부동소수점 숫자를 정수로 변환한 값을 반환하는 함수
    • float
      • 인자로 전달된 숫자 형식의 문자열, 정수를 부동소수점 숫자로 변환한 값을 반환하는 함수
    • str
      • 인자로 전달된 객체에 대한 문자열 변환 값을 반환하는 함수
  • 객체 조사를 위한 함수
    •  dir
      • 인자로 전달된 객체가 가지고 있는 변수, 메서드와 같은 속성 정보를 리스트 객체로 반환
      • 인자를 전달하지 않고 호출하면 현재 지역 스코프에 대한 정보를 리스트 객체로 반환
    • globals
      • 현재의 전역 심볼 테이블을 보여주는 딕셔너리를 반환하는 함수
      • 전역변수와 함수, 클래스의 정보 포함
    • locals
      • 현재의 지역 심볼 테이블을 보여주는 딕셔너리를 반환하는 함수
      • 매개변수를 포함한 지역변수와 중첩함수의 정보 포함
    • id
      • 인자로 전달된 객체의 고유 주소(참조값)을 반환하는 함수
    • isinstance
      • 첫 번째 인자로 전달된 객체가 두 번째 인자로 전달된 클래스의 인스턴스인지에 대한 여부를 True/False로 반환하는 함수
    • issubclass
      • 첫 번째 인자로 전달된 객체가 두 번째 인자로 전달된 클래스의 서브클래스인지에 대한 여부를 True/False로 반환하는 함수
  • 실행 관련 함수
    • eval
      • 실행 가능한 표현식의 문자열을 인자로 전달받아 해당 문자열의 표현식을 실행한 결과값을 반환하는 함수

 

unpack 연산자 *

얼마 전 회사에서 머신러닝에 대해 사내 강의를 들었습니다.

사내 강의였지만 머신러닝에 대해 전문가가 없기에 홍콩과기대 김성훈 교수님의 공개강의를 같이 듣는 걸로 대신했습니다.

(Link : 모두를 위한 머신러닝/딥러닝 강의)

실습은 Google이 만든 TensorFlow를 사용했는데 구현 언어는 Python 이었고 이렇게 자연스레 Python을 접하게 되었습니다.

그런데 머신러닝은 너무 어려웠고 그 이언에 Python이란 언어에 대한 이해도도 너무 낮았습니다.

어영부영 강의는 끝났고 머신러닝과 Python이 뇌리에서 사라져가고 있었습니다.


그러던 어느날, 매 달 알고리즘 퀴즈가 게시될거고 제일 먼저 푸는 사람에게 10만원 상품권을 지급하겠다는 글이 회사 게시판에 올라왔습니다.

이어서 8월 퀴즈 문제가 올라왔는데 저는 대학생 때 문제 풀던 경험을 살려 꼭 10만원을 타내겠다는 일념으로 문제를 후벼팠습니다.

그리고 무참히 패배했습니다 ㅡㅡ;;


참 오랜만의 문제풀기에 실패하고 Python과 알고리즘 두 가지를 공부해야겠다는 마음이 생겼습니다.

그래서 시작한게 문제풀기를 Python으로 하기!

온라인 저지는 예전에 봐뒀던 Baekjoon Online Judge 입니다.

운영자 최백준님은 꽤 유명하신 분 같네요. 알고리즘 공부법에 대한 슬라이드도 찾을 수 있었습니다. 



Python과 알고리즘 둘을 같이 공부해야 했기에 쉬운 문제부터 풀기로 했습니다. 저 같은 사람을 위한 메뉴가 있었는데요 바로 단계별로 문제풀기 입니다.

문제 > 단계별로 풀어보기 순으로 들어가면 단계별로 묶인 문제들을 볼 수 있습니다.


입/출력, 사칙연산, for문, if문 등 정말 기초부터 다질 수 있는 문제들로 시작할 수 있습니다.

단계별 문제들을 풀다보면 Python의 기본 문법은 다 알 수 있을거 같습니다.

저는 for문을 사용하는 문제들까지 다 풀었네요 ㅎㅎ


이상 알고리즘과 프로그래밍 언어 같이 공부하는 좋은 방법에 대한 포스팅이었습니다.

+ Recent posts