list(map(lambda x: x+10, [1, 2, 3]))
# 결과 : [11, 12, 13]
[n*2 for n in range(1, 11) if n % 2 == 1]
# 결과 : [2, 6, 10, 14, 18]
# 리스트 컴프리헨션을 사용하지 않을 경우
a = []
for n in range(1, 11):
if n % 2 == 1:
a.append(n*2)
a = {}
for key, value in a.items():
a[key] = value
# 리스트 컴프리헨션 사용할 경우
a = {key, value in a.items()}
루프의 반복 동작을 제어할 수 있는 루틴 형태
yield
구분(여기까지 실행 중이던 값을 내보낸다)을 사용해 제너레이터를 리턴
def get_natural_number():
n = 0
while True:
n += 1
yield n # 제너레이터를 리턴
g = get_natural_number()
for _ in range(1, 10):
print(next(g))
# 결과 : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
def generator():
yield 1
yield 'string'
yield True
g = generator()
print(g) # <generator object generator at 0x10a47c678>
print(next(g)) # 1
print(next(g)) # string
print(next(g)) # True
next()
를 호출하듯 매번 다음 숫자를 생성a = [n for n in range(100)]
b = range(100)
a에는 이미 생성된 값이 담겨있고, b는 생성해야 한다는 조건만 존재한다.
b에서는 값의 생성 조건만 보관하고 있기 때문에 숫자를 똑같이 100개 가지고 있지만, range 클래스를 활용하는 b 변수의 메모리 점유율이 훨씬 더 작다.
'열거하다'라는 뜻의 함수
여러 자료형(list, set, tuple 등)을 인덱스를 포함한 enumerate 객체로 리턴한다.
a = [1, 2, 3, 45, 2, 5]
enumerate(a) # <enumberate object a 0x1010f83f0>
list(enumerate(a))
# [(1, 0), (1, 2), (2, 3), (4, 45), (5, 2), (6, 5)]
a = ['a1', 'b2', 'c3']
리스트의 인덱스와 값을 함께 출력하기# 1. 값을 가져오기 위해 불필요한 a[i] 조회와 len을 사용하게 됨
for i in range(len(a)):
print(i, a[i])
# 2. 변수를 별도로 관리하는 형태로 깔끔하지 않음
i = 0
for v in a:
print(i, v)
i += 1
# 3. (인덱스, 값)이 깔끔하게 출력됨
for i, v in enumerate(a):
print(i, v)
divmod(a, b)
: (a//b, a%b)
의 결과를 리턴# 나눗셈
print(5/3) # 1
# 몫
print(5//3) # 1
# 나머지
print(5%3) # 2
# 몫과 나머지 한 번에 출력
print(divmod(5, 3)) # (1, 2) -> (몫, 나머지)
- 포맷 코드 사용 :
%d, %s
등- 포맷 함수 사용 :
{}.format
print("수학 점수는 %d점 입니다." % 100)
print("%s의 점수는 %d점 입니다." % ('홍길동', 67))
%10s
: 값의 왼쪽에 공백을 10칸 추가%-10s
: 값의 오른쪽에 공백을 10칸 추가%0.2f
: 소수점 2자리까지 표현# format 함수
print("수학 점수는 {0}점 입니다.".format(75))
print("{0}의 점수는 {1}점 입니다.".format("홍길동", 89))
# f-string
name = "홍길동"
score = 80
print(f"{name}의 점수는 {score}점 입니다.")
sep=
, end=
, join()
sep=""
print('a', 'b', sep=', ') # a, b
print('a', 'b') # a b
end=""
print('aa', end=' ')
print('bb')
# aa bb
'구분자'.join(리스트)
함수 : 문자열을 만들어서 반환a = ['a', 'b']
print(' '.join(a)) # a b
코딩할 때, 전체 골격을 잡아 놓고 내부에서 처리할 내용은 차근히 생각하면서 만들겠다는 의도를 가짐
class MyClass(object):
def method_a(self):
pass
def method_b(self):
print("method b")
c = MyClass()
local 심볼 테이블 딕셔너리를 가져오는 메소드. 업데이트 또한 가능
import pprint
pprint.pprint(locals())