Python入门学习笔记_3

独立程序

"""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})
  1. 相加
breakfast_counter + lunch_counter
Counter({'spam': 3, 'eggs': 3, 'bacon': 1})
  1. 相减,第一个列表有而第二个列表没有的元素
breakfast_counter - lunch_counter
Counter({'spam': 3})
  1. &二者共有的项(交集,取两者中较小计数)
lunch_counter & breakfast_counter
Counter({'eggs': 1})
  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!')])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值