Python은 Reference counted 메모리 관리.
is는 referenced object 주고가 같은지 비교.
==는 값을 비교.
-1은 True다. find는 찾지 못하면 -1을 리턴한다. find 보다는 in을 쓰는게 좋다.
f = filter(lambda n:'철' in n, data4)
for n in f:
print(n)
False로 처리되는 애들은 아래와 같다.
False | 불리언 | 거짓 |
None | None 유형 | 값 없음 |
0 | 정수 | 0 |
0.0 | 실수 | 0 |
0j | 복소수 | 0 |
'' | 문자열 | 빈 문자열 |
() | 튜플 | 빈 튜플 |
[] | 리스트 | 빈 리스트 |
{} | 집합 | 빈 집합 |
dict() | 사전 | 빈 사전 |
3항 연상 대신
rst = 100 if (a>0) else 200rst = (200, 100)[a>0]
rst = {True:100, False:200}
리스트 -> Dictionary
my = [13, 23, 33]
e = enumerate(my)
print( dict(e))
my1 = [12, 22, 32]
z = zip(my, my1) # key value list를 묶어서 dict 만들어 줌.print( dict(z))
리스트 항목 빈도 및 최빈도 추출
import collections
my = [10, 10, 10, 20, 20,30]
c = collections.Counter(my)
print (c)
print(c.most_common(3))
순서 있는 딕셔너리
o = collections.OrderedDict()
o['zz'] = 1o['bb'] = 20print (o)
Deque
q = collections.deque(maxlen=3)
q.append(10)
q.append(20)
q.append(30)
print (q)
q.append(40)
print(q)
q.appendleft(90)
배열
import array
arr = array.array('i')
arr.append(10)
arr.append(20)
arr.append(30)
print(arr)
arr.append(139065539)
print (arr)
함수 가변 파라미터
# 튜플을 가변인자로 넘길 때는 *를 붙여준다. 받는 쪽에서는 tuple로 받는다.
def fb4(*ar) :
for a in ar:
print(a)
fb4(10 ,20 , 30)
fb4("aa", "bb")
# 정의되지 않은 인자를 받고자 하면 **를 붙여준다. 받는 쪽에서는 dictionary로 받는다.
def fn5(**args): # 정의 되지 않은 인자 print(args)
fn5(a=10, b=20, c=30)
fn5(name="홍길동", age=20)
{'a': 10, 'b': 20, 'c': 30}
{'name': '홍길동', 'age': 20}
d = {'name': "이순신", 'age':40}
s = '%(name)s %(age)d' % data
def fn6(**args):
print(args)
fn6(**d) # 정의 되지 않은 인자로 dictionary를 넘길 때는 **를 붙여 준다.
print('{name} {age}'.format(**data)
a = 10
b = 3.14
c = 'abc'
s = 'b {1} a {0} c{2}'.format(a, b, c)
# 아래와 동치. 가변인자로 튜플 넘길 때는 * 붙여 준다.
s = 'b {1} a {0} c{2}'.format(*(a, b, c))
print(s)
문자열 가운데 정렬
print("acb".center(30))
포멧에 정의되지 않은 인자를 주는 방식
s = '{aa}, {bb} {cc}'.format(aa =10, bb=20, cc=30)
print(s)
# LGB Rule. 변수 찾기 우선 순위 : Local Global Built-ing = 10 # 글로벌 변수 임.
def fn():
g = 100 # 로컬 변수 임. print(locals())
print(id(g))
fn()
print(globals()) # 전역 변수 목록print('g=', g)
print(id(g))
str = 'korea'
n = str(n) # error. Global str이 Builtin str보다 우선 순위가 높아서 에러 발생.
# 글로벌 변수를 로컬에서 사용하는 방법
g = 10
def fn():
global g
g = 100
fn()
print(g) # 100 출력. global g 때문에 로컬에서도 global 변수 사용
def fn():
my = [10, 20, 30] # 리스트는 stack이 아닌 heap에 생성됨. print(id(my))
return my
rst = fn()
print(rst, id(rst))
4859544[10, 20, 30] 4859544
switch 대치
def fn1():
print("fn1")
def fn2():
print('fn2')
menu = {1:fn1, 2:fn2}
menu[1]()
dictionary에 get을 사용하면 default 값을 정해줄 수 있다.
d = {10:"A", 9:"A", 8:"B", 7:"C", 6:"D"}
print (d.get(n//10, "F"))
Tuple은 ()로 만든다.
다만, (10)과 같이 1항은 그대로는 숫자다.
때문에 (10,)와 같이 ,를 추가해줘야 한다.