numbers = "1 2 3"
num_list = numbers.split() #default는 빈칸
print(num_list)
['1', '2', '3']
split을 활용한 unpacking
one, two, three = "1 2 3".split()
print(one, two, three)
1 2 3
hello = ["안", "녕", "하", "세", "요"]
hello = "".join(hello)
print(hello)
안녕하세요
조건문과 list comprehension
nums = [i for i in range(10) if i%2 == 0]
print(nums)
[0, 2, 4, 6, 8]
for 중첩 list comprehension
nums = "123"
words = "abc"
new = [num + word for num in nums for word in words]
print(new)
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
list comprehension 2차원 list
nums = "123"
words = "abc"
new = [[num+word for word in words]for num in nums]
print(new)
[['1a', '1b', '1c'], ['2a', '2b', '2c'], ['3a', '3b', '3c']]
for문과 enumerate 를 사용하여 list의 있는 index와 값을 unpacking
for i, v in enumerate(["a", "b", "c"]):
print(i, v)
0 a
1 b
2 c
nums = [1, 2, 3]
words = ["a", "b", "c"]
kors = ["가", "나", "다"]
for num, word, kor in zip(nums, words, kors):
print(num, word, kor)
1 a 가
2 b 나
3 c 다
nums = (1, 2, 3)
words = ("a", "b", "c")
kors = ("가", "나", "다")
a, b, c = zip(nums, words, kors)
print(a, b, c)
(1, 'a', '가') (2, 'b', '나') (3, 'c', '다')
f = lambda x: x / 2
print(f(4))
2.0
f = lambda x: x*2
f1 = list(map(f, "hi"))
print(f1)
['hh', 'ii']
f1 = [word*2 for word in "hi"]
print(f1)
['hh', 'ii']
위는 동일한 역활을 수행하는 코드이지만 두번째 코드가 훨씬 직관적이고 이해하기가 쉽다.
from functools import reduce
print(reduce(lambda x, y: x+y, [1, 10, 100, 1000]))
1111
x, y = 1, 10 -> x+y = 11 이고 x=11
x, y = 11, 100 -> x+y = 111 이고 x=111
x, y = 111, 1000 -> x+y= 1111 이고 x = 1111
코드의 직관성이 떨어져 python3에서는 권장하지 않지만 다양한 머신러닝 코드에서 여전히 사용중이다. map과 reduce는 대용량의 데이터를 handling할 때 많이 사용된다.
def generator_list(nums):
for num in range(nums):
yield num
a = generator_list(10)
for i in a: #for문을 이용해야 출력가능
print(i)
0
1
2
3
4
5
6
7
8
9
generator comprehension(generator expression)
gen = (n*n for n in [1, 2, 3, 4])
for i in gen:
print(i)
1
4
9
16
from sys import getsizeof
gen_1 = (n for n in range(100))
list_1 = [n for n in range(100)]
print(getsizeof(gen_1))
print(getsizeof(list_1))
112
920
메모리 사용 용량이 다른것을 볼 수 있다.
keyword arguments - 함수에 입력되는 parameter의 변수명을 사용해서 arguments를 넘김
def add(x, y):
return x+y
add(y=10, x=1)
11
Default arguments - parameter의 기본 값을 사용, 입력하지 않을 경우 기본값 출력
def add(x, y=10):
return x+y
print(add(1, 11))
print(add(1))
12
11
Variable-length arguments(가변인자)
def args(*args):
a, b, c = args
print(a, b, c)
args(1, 2, 3)
1 2 3
Keyword variable-length arguments(키워드 가변인자)
def kwargs(**kwargs):
print(kwargs)
kwargs(one=1, two=2, three=3)
{'one': 1, 'two': 2, 'three': 3}
def args_kwargs(one, two, *args, **kwargs):
print(one, two)
print(sum(args))
print(kwargs)
args_kwargs(1, 2, 1, 1, 1, 1, ten=10, hund=100)
1 2
4
{'ten': 10, 'hund': 100}
def aster(a, *args):
print(a)
for i in args:
print(i)
aster(1, (10, 100, 1000))
1
(10, 100, 1000)
aster(1, *(10, 100, 1000)) #aster(1, 10, 100, 1000)과 동일
1
10
100
1000
aster(1, 10, 100, 1000)
1
10
100
1000
def aster_2(a, b, c, d):
print(a, b, c, d)
data = {"c": 3, "d": 4, "b": 2}
aster_2(1, **data)
1 2 3 4