int
0b11
: 2진수 (Binaray)0o17
: 8진수 (Octagonal)0x1F
: 16진수 (Hexagonal)float
complex
complex(1, 2)
1 + 2j
str
bool
True
False
list
[1,2,3]
tuple
(1,2,3)
set
{1,2,3}
dict
{“a”: 1, “b”: 2, “c”: 3”}
arr=[1,2,3]
print("%s %s %s" % (arr[0], arr[1], arr[2]))
truple=(1,2,3)
print("%s %s %s" % truple)
name = "rolroralra"
age = 20
print("Hello, {}. I am {}.".format(name, age))
print("Hello, {1}. You are {0}.".format(age, name))
person = {'name': 'Eric', 'age': 74}
print("Hello, {name}. You are {age}.".format(name=person['name'], age=person['age']))
# You can also use ** to do this neat trick with dictionaries
print("Hello, {name}. You are {age}.".format(**person))
print(f"Hello, {name}. You are {age}.")
Python에서 "comprehension"은 특정한 컨테이너에서 파생된 새로운 컨테이너를 만들기 위해 한 줄의 간결한 코드를 사용하는 구문입니다.
이는 리스트(list), 세트(set), 딕셔너리(dictionary) 등 여러 종류가 있으며, 코드를 보다 간단하고 읽기 쉽게 만들어줍니다.
각 컨테이너 타입에 따라 약간씩 문법이 다를 수 있습니다.
[x * 2 for x in range(10)]
{(i, j) for i in range(10) for j in range(i, 10)}
{f"{i}+{j}": i + j for i in range(10) for j in range(i, 10)}
gen = (x * x for x in range(10)) for i in enumerate(gen, start=0): print(i)
이 코드는 제너레이터 표현식을 사용합니다.
all(column in df.columns for column in ["sex_male", "sex_female"])
all
함수는 제너레이터에서 생성된 값을 순차적으로 평가합니다.False
값을 만나면 즉시 평가를 중단합니다. 따라서, 필요 이상으로 df.columns
를 반복하지 않습니다.이 코드는 리스트 컴프리헨션을 사용합니다.
all([column in df.columns for column in ["sex_male", "sex_female"]])
all
함수는 리스트 컴프리헨션에서 생성된 리스트를 받아 평가합니다.all(column in df.columns for column in ["sex_male", "sex_female"])
): 제너레이터 표현식을 사용하므로 메모리 효율적입니다.all([column in df.columns for column in ["sex_male", "sex_female"]])
): 리스트 컴프리헨션을 사용하므로 리스트를 미리 생성하여 메모리를 더 많이 사용합니다.False
값을 만나면 즉시 평가를 중단합니다.일반적으로 코드 1 (all(column in df.columns for column in ["sex_male", "sex_female"])
)이 더 효율적이며, 특히 대규모 데이터에 대해서는 제너레이터 표현식을 사용하는 것이 좋습니다. 이는 메모리 사용량을 줄이고, 평가를 더 빠르게 끝낼 수 있는 장점이 있습니다.
arr = [2, 7, 10]
for idx, val in enumerate(arr):
print(idx, val)
# Output:
# 0 2
# 1 7
# 2 10
arr = [2, 7, 10]
for idx in range(len(arr)):
print(idx, arr[idx])
# Output:
# 0 2
# 1 7
# 2 10
String 내장 함수 | 설명 |
---|---|
count(x: str, start, end) | 문자열 내의 특정 문자 개수 |
join(itreable: Iterable[str]) | Iterable[str] 문자열 조인 |
find(x: str, start, end) | 찾는 문자열이 처음 나온 인덱스를 반환 |
rfind(sub: str, start, end) | 끝에서부터 찾는 문자열이 처음 나온 인덱스를 반환 |
upper() | 소문자를 대문자로 변환 |
lower() | 대문자를 소문자로 변환 |
swapcase() | 소문자는 대문자로, 대문자는 소문자로 |
replace(old, new, count) | 문자열 내의 특정 값을 다른 값으로 치환 |
split(sep, maxsplit) | 특정 문자를 구분자로 문자열 분리 |
startswith(prefix, start, end) | 특정 문자열로 시작하는지 확인 |
endswith(suffix, start, end) | 특정 문자열로 끝나는지 확인 |
내장함수명 | 설명 |
---|---|
help() | 함수, 클래스 document 출력 |
dir() | 내부 구성 멤버 목록 |
print() | 출력 |
input() | 키보드 입력 |
range() | 정수 범위 설정 |
list() | 리스트 생성 |
abs() | 절대값 |
len() | 모든 오브젝트의 길이를 구함 |
round() | 반올림 |
type() | 데이터의 자료형을 반환 |
sum(iterable: Iterable) | 합산 |
min(arg1, arg2, *args, key: function) | 최소값 |
max(arg1, arg2, *args, key: function) | 최소값 |
pow(base: int, exp: int) | x 의 y 제곱 |
sorted(iterable, key=None, reverse=False) | iterable 컨테이너 정렬 |
함수명 | 설명 |
---|---|
extend(iterable: Iterable) → None | 배열에 배열을 추가 확장 |
append(object) → None | 배열 끝에 원소 추가 |
sort(key: function, reverse: bool) → None | 정렬 |
reverse() → None | 뒤집기 |
index(value: T, start=0, stop=…) → int | 값이 동일한 첫번째 인덱스 리턴 |
insert(index: int, value: T) → None | 삽입 |
remove(value: T) → None | 첫번째 동일한 값을 삭제 |
count(value: T) → int | 동일한 값의 개수 리턴 |
파이썬에서 슬라이스 객체는 리스트, 튜플, 문자열 등의 시퀀스(순서가 있는 데이터 타입)를 슬라이싱할 때 생성됩니다.
슬라이스 객체는 슬라이싱 연산을 표현하는데 사용되며, 해당 시퀀스의 부분집합을 선택할 때 사용됩니다.
슬라이스 객체는 시작(start), 끝(stop), 간격(step) 세 가지 요소로 구성됩니다.
start
stop
step
indices(len: int) -> Tuple[int, int, int]
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
my_slice = slice(0, 5, 2)
result = my_list[my_slice]
print(result) # 출력: [0, 2, 4]
lambda arguments: expression
arguments
는 매개변수expression
은 해당 매개변수를 이용하여 계산되는 표현식my_list = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, my_list)
print(list(result)) # 출력: [2, 4, 6, 8, 10]
my_list = [1, 2, 3, 4, 5]
new_list = list(map(lambda x: x * 2, my_list))
# 출력: [2, 4, 6, 8, 10]
my_list = [1, 2, 3, 4, 5]
new_list = list(filter(lambda x: x % 2 == 0, my_list))
# 출력: [2, 4]
from functools import reduce
my_list = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, my_list)
# 출력: 15 (1 + 2 + 3 + 4 + 5)
functools
모듈은 Python의 내장 모듈 중 하나로, 함수형 프로그래밍을 지원하는 몇 가지 유용한 함수를 제공합니다.
partial(func, *args, **keywords)
from functools import partial
def add(x, y):
return x + y
add_five = partial(add, 5)
print(add_five(3)) # 출력: 8
reduce(function, iterable[, initial]) -> value
from functools import reduce
my_list = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, my_list)
print(result) # 출력: 15
Least Recently Used
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
print(f"called fib({n})")
if n <= 1:
return n
return fib(n-1) + fib(n-2)
print(fib(10)) # 출력: 55
print(fib(11))
print(fib(5))
from functools import wraps
def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print('데코레이터 실행 전')
result = func(*args, **kwargs)
print('데코레이터 실행 후')
return result
return wrapper
@my_decorator
def example_function():
"""예제 함수입니다."""
print('함수가 실행됨')
print(example_function.__name__) # 출력: example_function
print(example_function.__doc__) # 출력: 예제 함수입니다.
sorted()
함수와 같은 함수에 사용됩니다.from functools import cmp_to_key
my_list = ["apple", "banana", "orange"]
sorted_list = sorted(my_list, key=cmp_to_key(lambda x, y: len(x) - len(y)))
print(sorted_list) # 출력: ['apple', 'banana', 'orange']
Generator와 Iterator는 둘 다 파이썬에서 반복 가능한(iterable) 객체를 다루는 데 사용됩니다.
그러나 두 가지는 다른 개념입니다.
__iter__()
와 __next__()
메서드를 구현한 객체입니다. __iter__()
는 이터레이터 자신을 반환하고, __next__()
는 다음 값을 반환합니다.iter()
함수를 호출하여 이터레이터를 얻을 수 있습니다.__next__()
메서드를 갖고 있어서 반복할 때마다 다음 값을 반환하고, 더 이상 반환할 값이 없을 때 StopIteration 예외를 발생시킵니다.my_list = [1, 2, 3, 4, 5]
my_iterator = iter(my_list)
try:
while True:
value = next(my_iterator)
print(value)
except StopIteration:
print("이터레이터의 끝에 도달했습니다.")
next()
함수에 기본값을 제공할 수 있습니다. 이를 활용하여 더 간결하게 코드를 작성할 수 있습니다.my_list = [1, 2, 3, 4, 5]
my_iterator = iter(my_list)
while True:
value = next(my_iterator, None)
if value is None:
print("이터레이터의 끝에 도달했습니다.")
break
print(value)
iter(iterable) -> iterator
my_list = [1, 2, 3, 4, 5]
my_iterator = iter(my_list)
print(next(my_iterator)) # 출력: 1
print(next(my_iterator)) # 출력: 2
print(next(my_iterator)) # 출력: 3
iter(callable, sentinel) -> iterator
from functools import partial
from random import randint
pull_trigger = partial(randint, 1, 6)
print('Starting a game of Russian Roulette...')
print('--------------------------------------')
for i in iter(pull_trigger, 6):
print('I am still alive, selected', i)
print('Oops, game over, I am dead! :(')
yield
키워드를 사용하여 값을 반환하면, 해당 함수는 제너레이터가 됩니다.def random_generator(stop_value):
while True:
value = random.randint(1, 10)
print(f"생성된 값: {value}")
if value == stop_value:
return # stop_value가 생성되면 제너레이터 종료
yield value
gen = random_generator(5)
for i in gen:
print(i)
# 생성된 값: 4
# 4
# 생성된 값: 9
# 9
# 생성된 값: 5
def wraps(wrapped,
assigned = WRAPPER_ASSIGNMENTS,
updated = WRAPPER_UPDATES):
"""Decorator factory to apply update_wrapper() to a wrapper function
Returns a decorator that invokes update_wrapper() with the decorated
function as the wrapper argument and the arguments to wraps() as the
remaining arguments. Default arguments are as for update_wrapper().
This is a convenience function to simplify applying partial() to
update_wrapper().
"""
return partial(update_wrapper, wrapped=wrapped,
assigned=assigned, updated=updated)
[파이썬 numpy] 배열의 축(axis) 이해하기
https://pybasall.tistory.com/129