独立程序
"""report.py"""
#from random import choice #method_1
import random #method_2
def get_description():
'Return random weather, just like the pros'
possibilities = ['rain', 'sleet', 'fog', 'sun', 'who knows']
#return choice(possibilities) #method_1
return random.choice(possibilities) #method_2
使用别名导入模块或模块的一部分
"""weatherman.py"""
#import report as wr #method_1
from report import get_description as do_it #method_2
#description = wr.get_description() #method_1
description = do_it()
print("Today's weather:", description)
#print('\n', wr.get_description.__doc__) #method_1
print('\n', do_it.__doc__) #method_2
import sys
for place in sys.path:
print(place)
Today's weather: sun
Return random weather, just like the pros
E:\PC Soft\Anaconda3\python36.zip
E:\PC Soft\Anaconda3\DLLs
E:\PC Soft\Anaconda3\lib
E:\PC Soft\Anaconda3
E:\PC Soft\Anaconda3\lib\site-packages
E:\PC Soft\Anaconda3\lib\site-packages\win32
E:\PC Soft\Anaconda3\lib\site-packages\win32\lib
E:\PC Soft\Anaconda3\lib\site-packages\Pythonwin
E:\PC Soft\Anaconda3\lib\site-packages\IPython\extensions
C:\Users\78412\.ipython
包
"""weather.py"""
from Module import daily, weekly
print('Daily: ', daily.forecast())
print('Weekly: ')
for number, outlook in enumerate(weekly.forecast(), 1):
print(number, outlook)
Daily: like yesterday
Weekly:
1 snow
2 more snow
3 sleet
4 freezing rain
5 rain
Python标准库
使用setdefault()和defaultdict()处理缺失的键
periodic_table = { 'Yellow':1, 'Black':2}
print(periodic_table)
{'Yellow': 1, 'Black': 2}
- setdefault()
carbon = periodic_table.setdefault('White', 12)
print(carbon)
print(periodic_table)
12
{'Yellow': 1, 'Black': 2, 'White': 12}
如果键已存在,这不会改变原来的值
helium = periodic_table.setdefault('White', 987)
print(periodic_table)
{'Yellow': 1, 'Black': 2, 'White': 12}
- defaultdict()
from collections import defaultdict
periodic_table = defaultdict(int)
periodic_table['Yellow'] = 1
periodic_table['White']
print(periodic_table)
defaultdict(<class 'int'>, {'Yellow': 1, 'White': 0})
from collections import defaultdict
def no_idea():
return 'Hun?'
bestiary = defaultdict(no_idea)
bestiary['A'] = 'ABC'
bestiary['B'] = 'BCD'
bestiary['C']
print(bestiary)
defaultdict(<function no_idea at 0x0000025C7D53C598>, {'A': 'ABC', 'B': 'BCD', 'C': 'Hun?'})
from collections import defaultdict
food_counter = defaultdict(int)
for food in ['spam', 'spam', 'eggs', 'spam']:
food_counter[food] += 1
for food, count in food_counter.items():
print(food, count)
spam 3
eggs 1
Counter()计数
from collections import Counter
breakfast = ['spam', 'spam', 'eggs', 'spam']
breakfast_counter = Counter(breakfast)
print(breakfast_counter)
Counter({'spam': 3, 'eggs': 1})
- most_commmon()
以降序返回所有元素
如果给定一个数字,会返回该数字前的元素
print(breakfast_counter.most_common())
print(breakfast_counter.most_common(1))
[('spam', 3), ('eggs', 1)]
[('spam', 3)]
- 组合计数器
#新建一个列表lunch
lunch = ['eggs', 'eggs', 'bacon']
lunch_counter = Counter(lunch)
print(lunch_counter)
Counter({'eggs': 2, 'bacon': 1})
- 相加
breakfast_counter + lunch_counter
Counter({'spam': 3, 'eggs': 3, 'bacon': 1})
- 相减,第一个列表有而第二个列表没有的元素
breakfast_counter - lunch_counter
Counter({'spam': 3})
- &二者共有的项(交集,取两者中较小计数)
lunch_counter & breakfast_counter
Counter({'eggs': 1})
- |并集(取两者中较大的值)
breakfast_counter | lunch_counter
Counter({'spam': 3, 'eggs': 2, 'bacon': 1})
有序字典OrderedDict()按键排序
from collections import OrderedDict
quotes = OrderedDict([
('Moe', 'A wise guy, huh?'),
('Larry', 'Ow!'),
('Curly', 'Nyuk nyuk!')
])
for stooge in quotes:
print(stooge)
Moe
Larry
Curly
双端队列:栈 + 队列
from collections import deque
def palindrome(word):
dq = deque(word)
while len(dq) > 1:
if dq.popleft() != dq.pop():
return False
return True
#palindrome('a')
#palindrome('rececar')
palindrome('radar')
True
- 回文算法(精)
def another_palindrome(word):
return word == word[ : : -1]
another_palindrome('radar')
True
itertools迭代代码结构
- chain() 迭代
#chain()
import itertools
for item in itertools.chain([1, 2], ['a', 'b']):
print(item)
1
2
a
b
- cycle() 无限迭代器
for item in itertools.accumulate([1, 2, 3, 4]):
print(item)
- 将函数作为accumulate()的第二个参数
def multiply(a, b):
return a * b
for item in itertools.accumulate([1, 2, 3, 4], multiply):
print(item)
1
2
6
24
使用pprint()友好输出
from pprint import pprint
print(quotes)
pprint(quotes)
OrderedDict([('Moe', 'A wise guy, huh?'), ('Larry', 'Ow!'), ('Curly', 'Nyuk nyuk!')])
OrderedDict([('Moe', 'A wise guy, huh?'),
('Larry', 'Ow!'),
('Curly', 'Nyuk nyuk!')])