In [1]:
# 5.3.4 검색 경로
import sys
for place in sys.path:
print(place)
In [2]:
# 5.5.1 예제
periodic_table = {
'Hydrogen':1,
'Helium':2,
}
print(periodic_table)
In [4]:
#딕셔너리에 키가 없는 경우에 새 값이 사용된다.
carbon = periodic_table.setdefault('Carbon', 12)
carbon
print(periodic_table)
# 존재하는 키에 다른 기본값을 할당하려고 하면 아무것도 바뀌지 않는다.
In [5]:
# defualtdict() 함수예제
from collections import defaultdict
periodic_table = defaultdict(int)
# 이제 모든 누락된 기본값은 0이된다
In [7]:
periodic_table['Hydrogen'] = 1
periodic_table['Lead']
periodic_table
Out[7]:
In [9]:
# defaultdict()의 인자는 값을 누락된 키에 할당하여 반환하는 함수이다.
# 다음 예제에서 no_idea() 함수는 필요할 때 값을 반환하기 위해 실행된다
def no_idea():
return 'Huh?'
besitary = defaultdict(no_idea)
besitary['A'] = 'Abominable Snowman'
besitary['B'] = 'Basilisk'
print(besitary['A'])
print(besitary['B'])
print(besitary['C']) # 값을 지정하지 않아 no_idea 함수가 실행되고, Huh?가 나온 것을 볼 수 있따.
In [10]:
besitary = defaultdict(lambda: "WHAT?")
besitary['E']
Out[10]:
In [13]:
# 카운터 만들기
from collections import defaultdict
food_counter = defaultdict(int)
for food in ['spam', 'spam', 'egg', 'spam']:
food_counter[food] += 1
# for food, count in food_counter.items()
for food, count in food_counter.items():
print(food, count)
In [18]:
# 위의 예제를 defaultdict()가 아니라 일반 딕셔너리였다면 예외가 발생한다.
dict_counter = {}
for food in ['spam', 'spam', 'egg', 'spam']:
if not food in dict_counter:
dict_counter[food] = 0
dict_counter[food] +=1
dict_counter
Out[18]:
In [20]:
from collections import Counter
breakfast =['spam', 'spam', 'egg', 'spam']
breakfast_counter = Counter(breakfast)
print(breakfast_counter)
type(breakfast_counter) # collections.counter 타입을 갖는다.
Out[20]:
In [29]:
# most_common() 함수는 모든 요소를 내림차순으로 반환한다.
breakfast_counter.most_common()
Out[29]:
In [31]:
#또한 카운터를 결합할 수 있다. lunch 카운터를 만들어서 + 연산자를 통해 결합 가능
lunch = ['egg', 'egg', 'bacon']
lunch_counter = Counter(lunch)
print(lunch_counter)
lunch_counter + breakfast_counter
Out[31]:
In [32]:
# + 외에도 -를 통해 다른 카운터를 뺼 수 있다.
print(lunch_counter - breakfast_counter)
print(breakfast_counter - lunch_counter)
In [33]:
# set과 마찬가지로 & 연산자를 사용하여 공통된 항목을 얻울수 있다.
print(lunch_counter & breakfast_counter)
In [34]:
from collections import OrderedDict
quotes = OrderedDict([
('Moe', 'A wise guy, huh?'),
('Larry', 'Ow!'),
('Curly', 'Nyuk nyuk'),
])
for stooge in quotes:
print(stooge)
In [36]:
# deque 예제
def palindrome(word):
from collections import deque
dq = deque(word)
while len(dq) > 1:
if dq.popleft() != dq.pop():
return False
return True
In [37]:
palindrome('a')
Out[37]:
In [38]:
palindrome('토마토')
Out[38]:
In [39]:
palindrome('aaba')
Out[39]:
In [40]:
# palindrome을 간단하게 하기 위해서는 slice로 문자열을 반전할 수 있다.
def another_palindrom(word):
return word == word[::-1]
In [41]:
another_palindrom("토마토마토")
Out[41]:
In [43]:
# chain() 함수는 순회 가능한 인자들을 하나씩 반환한다.
# 아래 예는 리스트 안의 인자들을 모두 반환하는 것을 볼 수 있다.
import itertools
for item in itertools.chain([1,2], ['a','b']):
print(item)
In [44]:
# 그냥 반환하면 리스트가 두번 반환된다.
for item in ([1,2], ['a','b']):
print(item)
In [45]:
# cycle()함수는 인자를 순환하는 무한 이터레이터이다. (쓸일이 있을까?)
for item in itertools.cycle([1,2]):
print(item)
break
In [46]:
# accumulate() 함수는 축적된 값을 계산한다. (기본적으로 합계)
for item in itertools.accumulate([1,2,3,4]):
print(item)
In [48]:
# accumulate() 함수의 두 번째 인자로 다른 함수를 전달하여
# 합계 대신 이 함수를 사용할 수 있다.
def multiply(a, b):
return a*b
for item in itertools.accumulate([1,2,3,4], multiply):
print(item)
In [49]:
from pprint import pprint
quotes = OrderedDict([
('Moe', 'A wise guy, huh?'),
('Larry', 'Ow!'),
('Curly', 'Nyuk nyuk'),
])
print(quotes)
In [50]:
pprint(quotes)
In [2]:
# 5.1 zoo.py 파일에서 Open 9-5 daily 문자열을 반환한느 hours() 함수를 정의
# zoo 모듈을 임포트한 후 hours() 함수를 호출하라
from zoo import hours
hours()
In [4]:
# 5.2 zoo 모듈을 menagerie라는 이름으로 import 한 후 함수 호출
import zoo as menagerie
menagerie.hours()
In [5]:
# 5.3 zoo 모듈로부터 직접 hours() 임포트
zoo.hours()
In [6]:
# 5.4 hours() 함수를 info라는 이름으로 임포트해서 호출하라
from zoo import hours as info
info()
In [8]:
# 5.5 a:1, b:2, c;3인 plain 딕셔너리를 출렦하라
plain = {
'a': 1,
'b': 2,
'c': 3,
}
print(plain)
In [14]:
# 5.6 plain을 통해 fancy라는 OrderedDict를 만들어 출력하라. 순서가 같읁지?
from collections import OrderedDict
fancy = OrderedDict([
('a', 1),
('b', 2),
('c', 3),
])
fancy
Out[14]:
In [17]:
# 5.7 dict_of_lists라는 defaultdict을 만들어 list 인자를 전달
# dict_of_lists['a']에 something for a 값을 추가하라
from collections import defaultdict
dict_of_lists = defaultdict()
dict_of_lists['a'] = 'something for a'
dict_of_lists
Out[17]:
In [ ]:
'etc > introducing python: 처음 시작하는 파이썬' 카테고리의 다른 글
vim 작업 취소, undo, undo 되돌리기! (0) | 2017.03.12 |
---|---|
6장: 객체와 클래스 (0) | 2017.01.18 |
4장: 파이 크러스트- 코드 구조 (0) | 2017.01.13 |
3장: 파이 채우기; list, tuple, dictionary, set (리스트, 튜플, 딕셔너리, 셋) (0) | 2017.01.11 |
2장: 파이 재료;숫자, 문자열, 변수 (0) | 2017.01.11 |