파이썬(7) 응용/심화

추가 문법

List Comprehension

  • 표현식과 제어문을 통해 특정한 값을 가진 리스트를 간결하게 생성하는 방법
# 1~3의 세제곱 결과가 담긴 리스트를 만드시오
cubic_list = []
for number in range(1, 4):
  cubic_list.append(number**3)
print(cubic_list)

# list comprehension
# 특정한 원소(요소)로 구성된 리스트를 만들 때 사용가능
[number**3 for number in range(1, 4)]


Dictionary Comprehension

# 1~3의 세제곱 결과가 담긴 딕셔너리를 만드시오
cubic dict = {}
for number in range(1, 4):
  cubic_dict[number] = number ** 3
print(cubic_dict)

# dictionary comprehension
# number(키)/number**3(값)
{number: number**3 for number in range(1,4)}


lambda [parameter] : 표현식

  • 람다함수
    • 표현식을 계산한 결과값을 반환하는 함수, 이름이 없어서 익명함수로도 불림
  • 특징
    • return문을 가질 수 없음
    • 간편 조건문 외 조건문이나 반복문을 가질 수 없음
  • 장점
    • 함수를 정의해서 사용하는것보다 간결하게 사용가능
    • def를 사용할 수 없는곳에서도 사용가능
# map(함수, 반복가능한것)
# 반복 가능한 것들의 모든 요소에 함수를 적용시킨 결과를
# map object로 반환

# map(int, input().split())
# int 형 변환 함수를
# input으로 받은 것을 쪼갠 결과인 리스트에 각각 적용한다.

numbers = [1, 2, 5, 10, 3, 9, 12]
result = []
for number in numbers:
  if number % 3 == 0:
    result.append(number*3)
print(result)

# 만약에 map으로 쓰고싶다면?
# 함수를 정의해야한다.

def multiple_3(number):
  return number * 3

print(list(map(multiple_3, numbers)))

# 이 함수는 계속 사용되지 않고 map에서만 사용된다.
# 만약 임시적인 함수를 만들고싶다면? -> lambda
print(list(map(lambda n: n*3, numbers)))
# lambda(고정), n:(input), n*3(return)


filter(함수, 반복가능한 객체)

  • 순회가능한 데이터구조의 모든 요소에 함수적용하고 그 결과가 True인 것들을 filter object로 반환
numbers = [1, 2, 5, 10, 3, 9, 12]
result = []
for number in numbers:
  if number % 3 == 0:
    result.append(number)
print(result)

print(list(filter(lambda n: n%3==0, number)))

# 이런 구문이 위의 filter로 변환되었다
def is_3(n):
  return n % 3 == 0

print(list(filter(is_3, numbers)))


파이썬 버전별 업데이트

언어는 버전에 따라서 계속 추가되거나 삭제되는것들이 있다.

최근에 추가되거나 변경된 문법들을 찾아서 익히는 능동적인 개발자가 될 수 있도록 하자.

https://docs.python.org/ko/3/

관심있을 포스팅